2011-08-03 54 views
0

我正在使用文件上传程序使用httphandler文件(.ashx),但它在普通的.net web appln中工作。现在我试图在MVC中使用它,但无法做到这一点。任何机构能帮助我解决这个问题或建议任何其他方式。使用处理程序文件在MVC中上传文件

回答

1

这里是你如何上传ASP.NET MVC文件,而无需诉诸的HttpHandler(* .ashx的):

让我们假设你想创建一个新的用户配置文件。每个配置文件都有一个名称和配置文件图片。

1)声明一个模型。使用HttpPostedFileBase类型的个人资料照片。

public class ProfileModel 
{ 
    public string Name { get; set; } 
    public HttpPostedFileBase ProfilePicture { get; set; } 
} 

2)使用此模型创建包含可用于创建新配置文件的表单的视图。不要忘记指定enctype =“multipart/form-data”。

<% using (Html.BeginForm("Add", "Profiles", FormMethod.Post, 
      new { enctype = "multipart/form-data" })) { %> 
    <%=Html.TextBoxFor(m => m.Name)%> 
    <input type="file" id="ProfilePicture" name="ProfilePicture" />  
    <input type="submit" value="Save" /> 
<% }%> 

3)在接受发布表单的控制器中声明一个动作方法。在这里您可以访问代表上传文件的流。以下代码示例将流读入一个字节数组(缓冲区)。之后,您可以将文件保存到文件系统,数据库等。

[HttpPost] 
public ActionResult Add(ProfileModel model) 
{ 
    if (model.ProfilePicture != null && model.ProfilePicture.InputStream != null) 
    { 
     var filename = model.ProfilePicture.FileName; 

     var buffer = new byte[model.ProfilePicture.InputStream.Length]; 
     model.ProfilePicture.InputStream.Read(buffer, 0, 
      (int) model.ProfilePicture.InputStream.Length); 

     //... 
    } 
}