使用c#上传图像的Web API(代码隐藏)

时间:2015-06-11 10:02:52

标签: c# ajax api file-upload

我需要 c#c​​ode 才能将图片上传到我的网络API。 ( c#代码将与我在下面的ajax调用中执行相同的操作

以下是我的工作示例,用于通过ajax调用从我的网络项目上传图片。

HTML

<form>
<span>Select file(s) to upload :</span>
<input id="file1" name="file1" type="file" multiple="multiple" />
<input id="button1" type="button" value="Upload" />
</form>

ajax致电

$(document).ready(function () {
    $("#button1").click(function (evt) {

        var files = $("#file1").get(0).files;
        if (files.length > 0) {
            var data = new FormData();
            for (i = 0; i < files.length; i++) {
                data.append("file" + i, files[i]);
            }

            $.ajax({
                type: "POST",
                url: window.apiuri + "/api/book/UploadCover()",
                contentType: false,
                processData: false,
                data: data,
                success: function (messages) {
                    for (i = 0; i < messages.length; i++) {
                        $.smkAlert({ text: messages[i], type: 'success' });                            
                    }
                },
                error: function () {
                    $.smkAlert({ text: "Error while invoking the Web API", type: 'success' });                        
                }
            });
        }
    });
});

c#中的API代码

public async Task<List<string>> UploadCover()
{
    try
    {
        List<string> messages = new List<string>();

        if (Request.Content.IsMimeMultipartContent())
        {
            string path = string.Format(@"C:\");

            API.Classes.ImageUploads.MyStreamProvider streamProvider = new API.Classes.ImageUploads.MyStreamProvider(path);

            await Request.Content.ReadAsMultipartAsync(streamProvider);


            foreach (var file in streamProvider.FileData)
            {
                FileInfo fi = new FileInfo(file.LocalFileName);
                try
                { 
                    messages.Add("<b>Book Cover Uploaded</b>");
                }
                catch (Exception ex)
                {
                    messages.Add("<b>Upload Failed</b>");
                }                        
            }

            return messages;
        }
        else
        {
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request!");
            throw new HttpResponseException(response);
        }
    }
    catch (Exception ex)
    {
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Request Failed!");
        throw new HttpResponseException(response);
    }
}

请帮我用c#代码将图片上传到我的网页API。谢谢

0 个答案:

没有答案