关于MVC 上传文件

前台代码如下

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script type="text/javascript">
        var times = 1;
        $("#add").click(function () {
            var fileNmae = "FileUpLoad" + n;
            $("#divdivfile").append("<input type=\"file\" name=\"" + fileNmae + "\" />");
            times++;
        });
    </script>
</head>
<body>
    <div>
        @using (Html.BeginForm("UpLoad", "UpdateLoad", FormMethod.Post, new { enctype="mutipart/form-data"}))
        {
            <div id="divfile">
                <input type="file" name="FileUpload" />
            </div>
            <input type="button" id="add" value="增加" />
            <input type="submit" id="Submit" value="上传" />
        }
    </div>
</body>
</html>

首先判断上传的文件是否合法

    public enum FileTypeExtension
    {
        GIF = 7173,
        PNG = 13780,
        JPG = 255216,
    }
    public class FileUploadCommon
    {
        /// <summary>
        /// 主要用于判断上传的特定文件是否附合特定后缀名的限制
        /// </summary>
        /// <param name="fu">上传的文件对象</param>
        /// <param name="fileEx">系统允许上传的文件的类型</param>
        /// <returns>true:代表通过验证,false:代表没有通过验证</returns>
        public static bool IsAllowedExtension(HttpPostedFileBase fu, FileTypeExtension[] fileEx)
        {
            int contentLength = fu.ContentLength;
            byte[] buffer = new byte[contentLength];
            fu.InputStream.Read(buffer, 0, contentLength);
            MemoryStream input = new MemoryStream(buffer);
            BinaryReader reader = new BinaryReader(input);
            string s = "";
            try
            {
                s = reader.ReadByte().ToString();
                s = s + reader.ReadByte().ToString();
            }
            catch
            {
            }
            reader.Close();
            input.Close();
            foreach (FileTypeExtension extension in fileEx)
            {
                if (int.Parse(s) == Convert.ToInt32(extension))
                {
                    return true;
                }
            }
            return false;
        }

    }

后台代码 分为 单个上传和批量上传,注示部份为批量上传

[HttpPost]
        [ValidateInput(false)]
        public ActionResult UpLoad(FormModel model)
        {
            FileTypeExtension[] fileTypeArr = { FileTypeExtension.GIF, FileTypeExtension.JPG, FileTypeExtension.PNG };
            // 单个上传
            try
            {
                if (Request.Files != null && Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
                {
                    string fileType = Request.Files[0].ContentType;   // 获取文件类型
                    Stream fileStream = Request.Files[0].InputStream;
                    bool fileOk = FileUploadCommon.IsAllowedExtension(Request.Files[0], fileTypeArr);    // 判断上传的文件是否合法
                    if (fileOk && Request.Files[0].ContentLength / 1024 < 1024)   // 判断合法 及 文件大小是否合法
                    {
                        string path = Server.MapPath("/Content/FileUpdateLoad/");
                        string fileName = Path.GetFileNameWithoutExtension(Request.Files[0].FileName) + DateTime.Now.ToString("yyyyMMddHHmmss") + fileType;
                        Request.Files[0].SaveAs(Path.Combine(path, fileName));
                        return RedirectToAction("Index", "UpdateLoad");                    }
                    else
                        ViewBag.Error = "文件过大或格式不正确";
                }
                else
                    ViewBag.Error = "上传文件失败,可能您未选择上传文件";
            }
            catch (Exception ex)
            {
                ViewBag.Error = "上传文件失败,原因如下:" + ex.Message;
            }
            //foreach (string upload in Request.Files)   // 如果是批量上传
            //{
            //    if (upload != null && Request.Files[upload].ContentLength > 0)
            //    {
            //        string fileType = Request.Files[upload].ContentType;   // 获取文件类型
            //        Stream fileStream = Request.Files[upload].InputStream;
            //        bool fileOk = FileUploadCommon.IsAllowedExtension(Request.Files[upload], fileTypeArr);    // 判断上传的文件是否合法
            //        if (fileOk && Request.Files[upload].ContentLength / 1024 < 1024)   // 判断合法 及 文件大小是否合法
            //        {
            //            string path = Server.MapPath("/Content/FileUpdateLoad/");
            //            string fileName = Path.GetFileNameWithoutExtension(Request.Files[upload].FileName) + DateTime.Now.ToString("yyyyMMddHHmmss") + fileType;
            //            Request.Files[upload].SaveAs(Path.Combine(path, fileName));
            //        }
            //        else
            //            ViewBag.Error = "文件过大或格式不正确";
            //    }
            //    else continue;
            //}
            return View(model);        }

关于配置文件 限制上传文件大小 和上传时间

    <httpRuntime executionTimeout="5000" maxRequestLength="2048000" useFullyQualifiedRedirectUrl="false"/>
  </system.web>

关于MVC 上传文件,布布扣,bubuko.com

时间: 2024-10-05 06:15:53

关于MVC 上传文件的相关文章

spring mvc上传文件的简单例子总结及注意事项

1.创建maven项目         在pom.xml里面引入该依赖的jar包,pom.xm的代码如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven

ASP.NET MVC上传文件

出处:http://www.cnblogs.com/zhouhb/p/3906714.html 最近参考网络资料,学习了ASP.NET MVC如何上传文件.最基本的,没有用jQuery等技术. 1.定义Model public class TestModel    {        [Display(Name = "标题")]        [Required]        public string Title        {            get;           

MVC上传文件

引言 做UI的时候,有一个上传Dll文件的功能,这个功能,之前在2.0的时候,只在特定的目录下进行上唇,而3.0要实现的是在任何的地方都可以上传文件,这个时候,我们就需要用到MVC如何上传文件. 实现 1.思路: 一开始我们在网上查到的一些信息,大多是千篇一律的,都是选择文件之后上传,上传用到的东西都是MVC封装好了,还有一部分是EasyUI封装好了的.我们就用现成的就行了. 2.原理: 原理一直以为是一种新的东西,实际上没有什么新的东西,就是IO的东西,上唇的文件给一个特定的文件名称(GUID

Spring MVC上传文件

1.applicationContext.xml 1 <bean id="multipartResolver" 2 class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 3 <property name="maxUploadSize" value="104857600" /> 4 <property

ASP.NET MVC 上传文件

1.首先创建一控制器文件UpFileController.cs: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc; namespace Mvc4Study.Controllers{ public class UpFileController : Controller { // // GET: /UpFile/ public ActionRes

spring mvc 上传文件

springmvc 上传文件步骤: 第一 拷贝所需jar 第二 需要在springmvc(springmvc-servlet.xml)中配置:SpringMVC上传文件时,需要配置MultipartResolver处理器 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">         <p

spring MVC上传文件演示

//相比smartUpload功能上感觉确实有点心有意力不足的感觉,就安全性判断后缀,smartUpload就非常方便. public ModelAndView addFileUp(HttpServletRequest request,HttpServletResponse response) throws Exception { String preName = genName.doMake();//设置文件前缀名时间戳的MD5值 String fileName = null; //路径+文件

MVC 上传文件+预览

学习记录    复习用 一.调用了Uploadify插件 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.(具体参数百度就是.) 二.上传文件的方法 namespace PM.Myjobweb.Controllers { public class FileOperationsController : Controller { BLL.pc_attachment bll_attachment = new BLL.pc_attachment(); // // GET:

spring mvc上传文件服务器配置

在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的.但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明.客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用MultipartResolver进行解析,springMVC会使用一个支持文件处理的