3

ここで見つけたサンプルコードを使用して、画像データを Web API メソッドに渡そうとしていますhttp://www.asp.net/web-api/overview/working-with-http/sending-html-form-data, -part-2で、MultipartFormDataStreamProvider.FileData が常に空であることがわかりました。これはなぜでしょうか?また、これは正しいアプローチですか?オプションはありますか?単一の画像のみを渡そうとしています。

呼び出し

var t = new FormData();
t.append('file-', file.id);
t.append('filename', file.name);
t.append('Size', file.size);

$.ajax({
    url: sf.getServiceRoot('mySite') + "upload/PostFormData",
    type: "POST",
    data: t,
    contentType: false,
    processData: false,
    beforeSend: sf.setModuleHeaders
}).done(function (response, status) {
    alert(response);
}).fail(function (xhr, result, status) {
    alert("error: " + result);
});

});

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

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

        try
        {
            // Read the form data.
            await Request.Content.ReadAsMultipartAsync(provider);

            // This illustrates how to get the file names.
            foreach (MultipartFileData file in provider.FileData)
            {
                Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                Trace.WriteLine("Server file path: " + file.LocalFileName);
            }
            return Request.CreateResponse(HttpStatusCode.OK);
        }
        catch (System.Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }
4

1 に答える 1