2013-05-07 134 views

回答

4

您可以使用确切的演示文件,而无需使用先前评论中链接的.NET示例。将表单操作链接更改为指向您创建的handler.ashx文件。

因此,在index.html的形式,将该网址添加到您的行动创建的处理程序:

<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; } 
} 

而在一个基本的水平,这将呈现和工作。然后,你必须在这里和那里调整一些代码,以使其运行得如何。尽管如此,这个处理程序正是您正确处理上传所需的全部内容。祝你好运!

+1

任何人都可以提供这个样本 – Sivajith 2014-01-23 07:44:23

+0

我试过这个,不适合我。如果我分别运行这个东西,并有一个处理程序运行从VS我得到的错误:SyntaxError:意外的令牌<,如果我在vs中运行整个事情(包括所有的HTML文件等)我得到的错误:方法不允许 – WtFudgE 2015-06-25 09:44:52

+0

这里是一个很好的MVC5示例:https://github.com/CodeHeight/jQuery-File-Upload.MVC5 – JoshYates1980 2017-01-29 03:02:39

相关问题