2017-05-16 5 views
0

メモリからファイルをアップロードするコードがあります。メモリからのC#ファイルのアップロード

私は方法1(ディスクからファイルを読み込む)を使用すると、コードが正常に動作します。アップロードしたファイルをテストサーバーから見ることができます。

方法2(私が望む方法)を使用してメモリ内のデータを使用すると、ファイルはサーバーにアップロードされません。

私はいくつかのライブラリからファイルを作成します。これはmemory_streamにあり、ディスクに保存してメモリに再ロードしたくありません。そして、ディスクからのテストファイルは、次のコードのメモリから作成されます。

//code for savigng memory to file 
if (AudioStream != null && AudioStream.Length > 0) 
{ 
    string path = $"D:\\temp\\r_123.mp3"; 
    FileStream fs = new FileStream(path, FileMode.Create); 
    AudioStream.Seek(0, SeekOrigin.Begin); 
    AudioStream.CopyTo(fs); 
    fs.Close(); 
} 



using (Stream AudioStream = new MemoryStream()) 
{ 
    // method 1 [working] 
    //load into memory from file 
    //using (FileStream fs = File.OpenRead(@"D:\Projects\T1.mp3")) 
    //{ 
    // fs.CopyTo(AudioStream); 
    //} 
    //end of method 1 

    // method 2, not working 
    memory_stream.Seek(0, SeekOrigin.Begin); 
    memory_stream.CopyTo(AudioStream); 
    // end of method 2 

    AudioStream.Seek(0, SeekOrigin.Begin); 
    using (HttpClient httpClient = new HttpClient()) 
    { 
     using (MultipartFormDataContent form = new MultipartFormDataContent()) 
     { 
      using (var streamContent = new StreamContent(memory_stream)) 
      { 
       using (var imageContent = new ByteArrayContent(streamContent.ReadAsByteArrayAsync().Result)) 
       { 
        imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); 

        form.Add(imageContent, "file", "cls.mp3"); 
        var response = httpClient.PostAsync(to_url, form).Result; 
       } 
      } 
     } 
    } 
} 

これを解決する方法はありますか?助けてください!

ありがとうございます!

答えて

0

私は自分の質問に答えます。ファイルアップロードコードに関する問題はありません。

問題はアップロードURLです。このサイトはasp.netサイトです。 URLに適した設定が有効になりました。 URLの最後に.aspxはありません。

.aspxでURLに投稿すると、ファイルはありません。 URLからaspxを削除するとコードは正常に動作します。

+0

となり、memorystreamから新しいmemorystreamにデータをコピーする必要はありません。 –

関連する問題