.NET MVC 实现上传附件

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。
作者: 永恒の_☆    地址: http://blog.csdn.net/chenghui0317/article/details/9501639

    .NET MVC 上传附件 原理和以前原来一样,只不过实现方式略有不同,具体解决方案如下:

    首先我们要进入upload.cshtml页面中选择附件, 按照mvc的流程,先要根据controller跳转,所以创建AttachmentController控制器后,定义好Index的action动作,然后定义upload.cshtml,代码如下:

@{
    ViewBag.Title = "Upload";
}

<h2>Upload File</h2>
@using (Html.BeginForm("Upload", "Attachment", FormMethod.Post, new { enctype = "multipart/form-data" }))
{    
    <div>
        附件名称:<input name="uploadName"  />
    </div>
    <div>
        选择附件:<input name="uploadfile" type="file" />
    </div>
    <div>
        <input type="submit" value="上传" />
    </div>
}
和以前的表单一样,表单使用Html.beginForm,然后 需要加上enctype = "multipart/form-data",效果如下图:


View层创建好之后,然后在AttachmentController 中添加 Upload()方法,代码如下:

        /// <summary>
        /// 上传操作
        /// </summary>
        /// <returns></returns>
        public ActionResult Upload() 
        {
            string showFileName = Request["UploadName"];
            System.Web.HttpPostedFileBase file = Request.Files["UploadFile"];
            //存入文件
            if (file.ContentLength > 0)
            {
                //先查看附件目录是否存在,不存在就创建,否则会报错 未找到路径。
                if(!System.IO.File.Exists(attachFile)){
                    //这个是根据路径新建一个目录
                    System.IO.Directory.CreateDirectory(attachFile);
                    //这个是根据路径新建一个文件,如果没有就会创建文件, 否则就会报错:对路径“...”的访问被拒绝。 
                    //System.IO.File.Create(attachFile);
                }
                //这个是上传到当前项目的目录下,和Views文件夹同级
                file.SaveAs(Server.MapPath("~/") + System.IO.Path.GetFileName(file.FileName));
				//这个是上传到指定的目录下,必须指定具体的文件,不然会报错:对路径“...”的访问被拒绝。 
                file.SaveAs(attachFile + "\\" + System.IO.Path.GetFileName(showFileName));
            }
            ViewBag.Result = System.IO.Path.GetFileName(file.FileName) + " 上传成功!";

            return View("Result");
        }

上面的attachFile 是在项目根目录的web.config 中的<appSetting> 添加一个键值对保存附件上传的路径,比如:

  <appSettings>
    <add key="attachFile" value="D:\attachment"/>
  </appSettings>

然后在AttachmentController 中添加常量获取配置信息,如下:

        string attachFile = ConfigurationSettings.AppSettings["attachFile"].Trim();

需要注意的是,.net的创建文件的方式和java不一样,直接new java.io.File(filePath)  就好了,.net把 创建文件和文件夹分开了,创建目录要用 System.IO.Directory.CreateDirectory(attachFile);

而创建文件要用 System.IO.File.Create(attachFile);

如果明明创建目录,但是用了System.IO.File.Create(attachFile); 就会报如下错误:



业务逻辑写好之后,再定义一个Result.cshtml页面获取上传的信息即可,效果图如下:


好了 ,基本上在MVC上做的上传就基本完成了,还是蛮简单的。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值