0

私のクライアント アプリは、マルチパート フォーム データ ストリームを介して画像ファイルとビデオ ファイルを送信します。そして、画像ファイルを画像フォルダに、動画ファイルを動画フォルダに保存したいです。

お客様からのご依頼はこんな感じです

Content-Disposition: フォームデータ。name="写真"; filename="IMG_9322.JPG" Content-Type:application/octet-stream

Content-Disposition: フォームデータ。name="ビデオ"; filename="sample.avi" Content-Type:application/octet-stream

そして、これは私の最後のApiコントローラーメソッドです

[HttpPost]
    [ActionName("UploadVideoEntry")]
    public async Task<HttpResponseMessage> UploadVideoEntry()
    {
        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        var folderName = "photos";
        string root = HttpContext.Current.Server.MapPath("~/" + folderName);
        var provider = new MultipartFormDataStreamProvider(root);

        try
        {               

            // Read the form data and return an async task.
            var response = await Request.Content.ReadAsMultipartAsync(provider);              


            return Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage<Object> { success = true, message = "Media Uploaded" });

        }
        catch (System.Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }

これは、私が指定したパスであるため、両方のファイルを写真フォルダーに保存します。しかし、両方のファイルを分離して別のパスに保存する方法がわかりません。誰かアイデアがあれば教えてください。ありがとう

4

1 に答える 1

0

次のページの例を見てください。

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2

ファイルのダウンロード後にファイル名を取得して移動したい。私は非常に似たようなことをしました。ファイル名を取得したら、使用できます

File.Move(currentPath,newPath)

ファイルを新しい場所に移動します。currentPath は、root変数にファイル名を加えたものです。@"\" を追加することを忘れないでください:

currentPath = root + @"\" + filename

以下は、ファイル名を取得するためのコードです。

foreach (MultipartFileData file in provider.FileData)
{
    Trace.WriteLine(file.Headers.ContentDisposition.FileName);
    Trace.WriteLine("Server file path: " + file.LocalFileName);
}

私自身の最初のステップは、ファイル名をテストして拡張子を判断し、適切なファイルが見つかったら、必要なアクション (この場合は移動) を実行することです。

于 2013-04-16T14:56:33.090 に答える