2016-04-22 9 views
3

Web APIプロジェクト用のユーティリティにC#があります。コードのアップロード部分は正常に動作します。私はアップロードされたファイルと一致するサーバーに取得するファイルを確認しました。しかし、ダウンロードで何かが起きてクライアントがファイルを破損していると見なしてしまい、diffを実行すると何かが間違っていることがわかります。C#ファイルのダウンロードは壊れています

Code Compare diff of the files

残念ながら、私は私が間違ってやっているかを把握することはできません。次のようにユーティリティの関連する部分は次のとおりです。

public static HttpResponseMessage StreamResponse(this HttpRequestMessage request, Stream stream) 
{ 
    if (stream.CanSeek) stream.Position = 0;// Reset stream if possible 

    HttpResponseMessage response = request.CreateResponse(HttpStatusCode.OK); 
    response.Content = new StreamContent(stream); 
    if (stream is FileStream) 
    {// If this is a FileStream, might as well figure out the content type 
     string mimeType = MimeMapping.GetMimeMapping(((FileStream)stream).Name); 
     response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(mimeType); 
    } 
    return response; 
} 

public static HttpResponseMessage DownloadAs(this HttpResponseMessage response, string fileName) 
{ 
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
    response.Content.Headers.ContentDisposition.FileName = fileName; 
    response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(MimeMapping.GetMimeMapping(fileName)); 
    return response;// For chaining or whatnot 
} 

APIコントローラでの私の使用量がreturn ResponseMessage(Request.StreamResponse(stream).DownloadAs("Filename.ext"));

である私は、二重ダウンロードするためのコードをチェックしましたが、これは私が見つけたものと一致しているようです。 私は何が間違っているのですか、何が欠けていますか?エンコードや文字セットに何か問題があるようですが、解決策が何であるかはわかりません。

答えて

0

最後にthis Q&Aのおかげで問題が分かりました。クライアント側のコードで$httpコールのresponseTypeオプション/パラメータが不足していました。

関連する問題