我正在尝试通过 Asp.Net 使用 jquery blueimp 多文件上传。经过两天不成功的尝试,我决定问也许有人会分享这个工作示例。
我会很感激。
您可以使用确切的演示文件,而不必使用之前评论中链接的 .NET 示例。将表单操作链接更改为指向您创建的 handler.ashx 文件。
因此,在 index.html 的表单中,将 url 添加到您作为操作创建的处理程序中:
<form id="fileupload" action="GongosHandler.ashx" method="POST" enctype="multipart/form-data">
然后做一个基本的处理程序,编码如下:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";//"application/json";
var r = new System.Collections.Generic.List<ViewDataUploadFilesResult>();
for (var x = 0; x < context.Request.Files.Count; x++)
{
HttpPostedFile hpf = context.Request.Files[x] as HttpPostedFile;
string FileName = string.Empty;
if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE")
{
string[] files = hpf.FileName.Split(new char[] { '\\' });
FileName = files[files.Length - 1];
}
else
{
FileName = hpf.FileName;
}
if (hpf.ContentLength == 0)
continue;
string savedFileName = context.Server.MapPath("~/Uploads/" + FileName);
try
{
hpf.SaveAs(savedFileName);
}
catch (Exception ex)
{
}
r.Add(new ViewDataUploadFilesResult()
{
thumbnailUrl = savedFileName,
name = FileName,
length = hpf.ContentLength,
type = hpf.ContentType,
url = string.Format("/Uploads/{0}", FileName),
deleteUrl = string.Format("/Uploads/{0}", FileName)
});
var uploadedFiles = new
{
files = r.ToArray()
};
//was returning a new json string everytime, so then duplicating if
//sending multiple files. Example, file 1 was in first position,
//then file 1 & 2 in second position, and so on. So, I only grab,
//the last JSON instance to get all files.
if (x == (context.Request.Files.Count - 1))
{
var jsonObj = JsonConvert.SerializeObject(uploadedFiles, Formatting.Indented);
string jsonHttpOutputStream = jsonObj.ToString();
context.Response.Write(jsonHttpOutputStream);
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
public class ViewDataUploadFilesResult
{
public string thumbnailUrl { get; set; }
public string name { get; set; }
public int length { get; set; }
public string type { get; set; }
public string url { get; set; }
public string deleteUrl { get; set; }
}
在基本层面上,这将渲染和工作。然后,你必须在这里和那里调整一些代码,让它按照你想要的方式运行。但是,此处理程序是正确处理上传所需的全部内容。祝你好运!