gpt4 book ai didi

jquery - ASP.NET MVC 4 Web Api ajax 文件上传

转载 作者:行者123 更新时间:2023-12-03 22:31:14 24 4
gpt4 key购买 nike

我正在使用 asp.net mvc 4 web api 开发某种服务。在一张表单上,用户必须上传一些文件,然后将表单提交到服务器。问题出在 ajax 文件上传到 asp.net mvc web api 中。我已经实现了不使用ajax的上传。但我需要它是用ajax完成的。这是

的实现
public Task<HttpResponseMessage> PostJob()
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.UnsupportedMediaType));
}

string path = HttpContext.Current.Server.MapPath(string.Format("~/Resources/Documents"));
MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(path);
var request = Request.Content.ReadAsMultipartAsync(provider);

var task = request.ContinueWith<HttpResponseMessage>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
}

string fileName = provider.BodyPartFileNames.FirstOrDefault().Value;
string originalName = provider.BodyPartFileNames.FirstOrDefault().Key.TrimStart('"').TrimEnd('"');
string RandomName = provider.BodyPartFileNames.First().Value + Path.GetExtension(originalName);

FileInfo file = new FileInfo(fileName);
file.CopyTo(Path.Combine(path, originalName), true);
file.Delete();


return new HttpResponseMessage(HttpStatusCode.Created);

});

我找到了使用 HTML5 执行此操作的文章 http://www.strathweb.com/2012/04/html5-drag-and-drop-asynchronous-multi-file-upload-with-asp-net-webapi/ 。我需要在 IE8 中完成这项工作。也许你有什么想法?

感谢任何帮助,伊琳娜。

最佳答案

您无法在 IE8 等旧版浏览器中使用纯 JavaScript 和 AJAX 上传文件。原因是您无权访问用户在文件输入中选择的文件内容。由于您无权访问此内容,因此无法将其发送到服务器。

您可以使用一些现有的文件上传插件:

他们将测试浏览器的功能,如果浏览器支持 HTML5 和新的 XHR2 对象(允许使用 AJAX 上传文件),它将使用该对象。或者,如果浏览器不支持,该插件可能会回退到 Flash 或隐藏的 iframe。因此,如果您需要支持旧版浏览器,您没有太多选择,只能使用其他一些客户端脚本技术(例如 Flash)或使用隐藏的 iframe,该 iframe 会伪造 AJAX 请求并实际发送正常的 multipart/form-data 请求。

关于jquery - ASP.NET MVC 4 Web Api ajax 文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com