大家好,我是 asp.net fileUploader 的初学者,我正在使用打击代码上传:
该 HTML:
<asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" />
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Upload Selected File(s)" />
JavaScript 代码:
$("#Button1").click(function (evt) {
var fileUpload = $("#FileUpload1").get(0);
var files = fileUpload.files;
var data = new FormData();
for (var i = 0; i < files.length; i++) {
data.append(files[i].name, files[i]);
}
var options = {};
options.url = "FileUploadHandler.ashx";
options.type = "POST";
options.data = data;
options.contentType = false;
options.processData = false;
options.success = function (result) { alert(result); };
options.error = function (err) { alert(err.toString()); };
和处理程序代码:
if (context.Request.Files.Count > 0)
{
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++)
{
HttpPostedFile file = files[i];
string fname = context.Server.MapPath("~/uploads/" + file.FileName);
file.SaveAs(fname);
}
}
context.Response.ContentType = "text/plain";
context.Response.Write("File(s) Uploaded Successfully!");
我有两个问题,第一个它无法在Web应用程序的根目录中找到上传文件,第二个是页面回发,是否有人可以帮助我解决问题,谢谢!
我自己对jQuery-File-Upload有点困惑,但是在查看了插件文档后,我发现了插件在Windows环境中工作所需的内容。
问题 1:文件保存 - 关于此问题,请确保您正在保存到以前创建的有效目录,并且您对该目录具有 WRITE 权限。
问题 2:上传回发 - 您必须设置上传脚本以写入上传的文件,并向插件返回有效的 JSON 响应,如插件文档中所定义:https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#using-jquery-file-upload-ui-version-with-a-custom-server-side-upload-handler
if (context.Request.Files.Count > 0) {
HttpFileCollection files = context.Request.Files;
for (int i = 0; i < files.Count; i++) {
HttpPostedFile file = files[i];
string fname = context.Server.MapPath("~/uploads/" + file.FileName);
file.SaveAs(fname);
}
}
upload_response = '{"files":[{"name": ' + file.FileName + '","size":' file.FileSize + ',"url":"http://example.org/files/ + file.FileName + ",'
upload_response =+ '"thumbnailUrl": "http://example.org/files/thumbnail/ + file.FileName + ","deleteUrl": "http://example.org/files/ + file.FileName + ",'
upload_response =+ '"deleteType": "DELETE"}]}"'
context.Response.ContentType = "application/json";
context.Response.Write( upload_response );
请注意,我还将内容类型更改为"application/json"。这段代码的语法可能不完整,但最重要的是输出插件所需的这些 JSON 字段。