0

ByteArrayContentforを使用してファイルをアップロードするには、 を配列にHttpClient読み込んでいます。コードは画像で問題なく動作していますが、ファイルを介して生成しているファイルでは動作しません-ファイルが空でなくても、ダブルチェックしました。*任意の方法でファイルにアクセスします:StorageFilebyteAudioVideoCaptureDevice

byte[] data;
StorageFolder folder = ApplicationData.Current.LocalFolder;

try {
    Debug.WriteLine("uploading: "+ fileName);
    StorageFile file = await folder.GetFileAsync("data\\"+LocalPayload);
    var probs = await file.GetBasicPropertiesAsync();
    Debug.WriteLine("path " + file.Path + "" + " size " + probs.Size);

    try
    {

        var stream = await file.OpenReadAsync();
        using (var dataReader = new DataReader(stream))
        {
            Debug.WriteLine("stream size is " + stream.Size);
            data = new byte[stream.Size];
            await dataReader.LoadAsync((uint)stream.Size);
            dataReader.ReadBytes(data);
        }

        Debug.WriteLine("stream was read");
        content = new ByteArrayContent(data);
    }
    catch (System.IO.FileNotFoundException e)
    {
        Debug.WriteLine("file not found", e.ToString());
        return;
    }
    catch (Exception e)
    {
        Debug.WriteLine("could not create byte array for file: " + e.ToString());
        return;
    }

}
catch (Exception e)
{
    Debug.WriteLine("could not read file: " + e.ToString());
    return;
}

これは例外です

could not read file: System.ArgumentException: Value does not fall within the expected range.
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at TestApp.Models.Item.<Upload>d__1f.MoveNext()

サウンドを録音するために最初に使用しているファイルをキャプチャするには

IStorageFolder applicationFolder = ApplicationData.Current.LocalFolder;
var dataFolder = await applicationFolder.CreateFolderAsync("data", CreationCollisionOption.OpenIfExists);
outputFile = await dataFolder.CreateFileAsync(audioFileName, CreationCollisionOption.ReplaceExisting);
stream = await outputFile.OpenAsync(FileAccessMode.ReadWrite);
await dev.StartRecordingToStreamAsync(stream);

そして、ユーザーとのやり取りの後、私は電話しています

await dev.StopRecordingAsync();
Debug.WriteLine("stopped recording");
await stream.FlushAsync();
stream.Dispose();

一部のファイルが機能し、一部のファイルが機能しない理由について何か提案はありますか?

ありがとう!

UPDATEは、ファイルとフォルダーのソースを作成するためのコードを追加しました

UPDATE2は、ファイル サイズを読み取るために try catch を囲むためのコードを追加しました

4

1 に答える 1

0

この問題は、サウンド ファイルのファイル名が間違っていることが原因でした。上記のコードで使用されているファイル名だけでなく、絶対パスも保存しました。

助けてくれたみんなありがとう!

于 2013-06-19T09:11:27.530 に答える