`
北极的。鱼
  • 浏览: 158996 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】文件上传

    博客分类:
  • MVC
 
阅读更多

转自:http://www.cnblogs.com/zhongxinWang/archive/2012/12/12/2815237.html

 

1.AjaxFileUpload

地址:http://www.phpletter.com/Demo/AjaxFileUpload-Demo/

下载:ajaxfileupload.rar

<script type="text/javascript">
    function ajaxFileUpload() {
        $.ajaxFileUpload(
            {
                url: '/Home/AjaxSave',
                secureuri: false,
                fileElementId: 'fileToUpload',
                dataType: 'json',
                beforeSend: function () {

                },
                complete: function () {

                },
                success: function (data, status) {
                    if (typeof (data.error) != 'undefined') {
                        if (data.error != '') {
                            alert(data.error);
                        } else {
                            alert(data.msg);
                        }
                    }
                },
                error: function (data, status, e) {
                    alert(e);
                }
            }
        );
        return false;
    }
</script>

 HTML

<input id="fileToUpload" type="file" size="45" name="fileToUpload" />
<input type="button" id="buttonUpload" onclick="return ajaxFileUpload();" value="Upload" />

 后台

public void AjaxSave()
 {
     var file = Request.Files[0];
     string path = Server.MapPath("~") + "/Upfiles/" + "/";
     if (!Directory.Exists(path))
      {
         Directory.CreateDirectory(path);
      }

      file.SaveAs(path + Path.GetFileName(file.FileName));
}

 

2.Ajax文件上传

FileUplaodDemo.rar

    1.Index视图中添加一个上传控件,请求文件列表的js。

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.8.3.min.js")"></script>
<script type="text/javascript">
    $(document).ready(function () {
        //文件列表
        $.post("/Borrow/FileList", null, function (data) {
            $("#fileList").html(data);
        });
        //提交图片之后的ajax请求更新
        $("#fileList").click(function () {
            $.post("/Home/FileList", null, function (data) {
                $("#fileList").html(data);
                $("#fileToUpload").val(null);
            });
        });
    });
</script>
<div>
    <div id="fileList">
        文件列表
    </div>
    <br />
    @using (Html.BeginForm("Upload", "Home", FormMethod.Post, htmlAttributes: new { enctype = "multipart/form-data", target = "msgframe" }))
    {
        <input id="fileToUpload" type="file" size="45" name="fileToUpload" />
        <input type="submit" style="cursor: pointer;" value="上传" />
    }
    <iframe id="msgframe" name="msgframe" style="display: none;"></iframe>
</div>

 2.控制器

public class HomeController : Controller
    {
        //Index
        public ViewResult Index()
        {
            return View();
        }
        //上传
        public ActionResult Upload()
        {
            //获取文件
            var file = Request.Files["fileToUpload"];
            string msg = "";

            //保存
            if (file != null && file.ContentLength > 0)
            {
                //文件目录
                string path = Server.MapPath("~") + "Upfiles\\";
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                //文件类型验证
                string[] allowExtension = { "application/x-bmp" ,"image/jpeg", "application/x-jpg", "image/gif", "application/x-png", 
                                            "application/msword","applications-powerpoint", "application/x-ppt", "application/-excel",
                                            "application/x-xls","application/vnd.ms-excel" };
                if (!allowExtension.Contains(file.ContentType))
                {
                    msg = "上传文件类型不正确";
                }
                else
                {
                    //上传文件大小验证
                    long len = GetDirectoryLength(path) + file.ContentLength;
                    if (len <= 10 * 1024 * 1024)
                    {
                        string directoryName = path + "\\" + file.FileName;
                        file.SaveAs(directoryName);//文件
                    }
                    else
                    {
                        msg = "每个借款项目的文件不能超过10M";
                    }
                }
            }
            else
            {
                msg = "添加文件失败";
            }
            if (!string.IsNullOrEmpty(msg))
            {
                Response.Write("<script>alert('" + msg + "');</script>");
            }
            Response.Write("<script>parent.document.getElementById('fileList').click();</script>");
            return View();
        }
        //判断目录下文件的总大小
        private long GetDirectoryLength(string dirPath)
        {
            long len = 0;
            DirectoryInfo di = new DirectoryInfo(dirPath);
            foreach (FileInfo fi in di.GetFiles())
            {
                len += fi.Length;
            }
            foreach (DirectoryInfo dis in di.GetDirectories())
            {
                len += GetDirectoryLength(dis.FullName);
            }
            return len;
        }
        //文件列表
        public ActionResult FileList()
        {
            return PartialView();
        }
    }

  3.Upload视图

@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <title>Upload</title>
</head>
<body>
    <div>
        
    </div>
</body>
</html>

 补充:

<form name="formToUpload" method="post" action="..\loadjsonM\productPlan_JhJson.ashx" enctype="multipart/form-data" target="msgframe">
    <input id="fileToUpload" type="file" size="45" name="fileToUpload" />
    <input type="submit" style="cursor: pointer;" value="上传" />
    <input name="uptype" type="hidden" value="55" />
</form>
<iframe id="msgframe" name="msgframe" style="display: none;"></iframe>

 

string strReturn =
@"
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type='text/javascript'>
        @msg
    </script>
</head>
<body>
</body>
</html>
";
context.Response.ContentType = "text/html";
context.Response.Write(strReturn.Replace("@msg", msg));

 

3.选中文件即上传

function upload() {
        $("#fileToUpload").click();
        setTimeout("checkFile()", 1000);
    }

    var timeout;
    function checkFile() {
        var filePath = $("#fileToUpload").val();
        if (filePath == "" || filePath == null) {
            timeout = setTimeout("checkFile()", 1000);
        } else {
            clearTimeout(timeout);
            $("#formUpload").submit();
            $("#fileToUpload").val("");
        }
    }

 

<div style="display:none;">
    <form id="formUpload" name="formToUpload" method="post" action="Accessory/Upload" enctype="multipart/form-data" target="msgframe">
        <input id="fileToUpload" type="file" size="45" name="fileToUpload" />
    </form>
    <iframe id="msgframe" name="msgframe" style="display: none;"></iframe>
</div>

 Request.File文件大小限制

错误消息:超过了最大请求长度

 
错误原因:asp.net默认最大上传文件大小为4M,运行超时时间为90S。
 
解决方案:
 
1. 修改web.config文件可以改变这个默认值     
   
<configuration>     
      <system.web>   
                  <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
      </system.web>   
<configuration> 
 
2.另一种方法是修改.NET FrameWork:
 
(1) 修改 C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG  目录下的machine.config 文件。
 
(2) 查找    "<httpruntime"    在这一行将  maxRequestLength的值改为理想的值,比如想要8M,就输入8192.     
这样,你的任何一个    web    工程都可以上传最大8M的文件。
3.顺便说下IIS中限制上传文件大小的修改方法:
 
(1)首先要到进程中把IIS服务关了,即把inetinfo.exe进程关了。
 
(2)在系统目录中找到:windows/system32/inesrv/metabase.xml”文件,找个文本编辑器打开,查找AspMaxRequestEntityAllowed="204800"这一项,这就是iis上传文件的默认大小了,默认为204800Byte,也就是200KB,将它改为需要的大小就可以了。
分享到:
评论

相关推荐

    .Net带进度条文件上传以及转换为SWF文件

    在.NET开发环境中,实现带进度条的文件上传和文件转换为SWF格式是常见的需求,尤其是在构建交互式、用户体验良好的Web应用时。本教程将详细讲解如何实现这两个功能。 首先,我们来探讨带进度条的文件上传。在传统的...

    upload文件上传移动转换

    信息系统中upload文件上传移动转换

    ASP.NET Core单文件和多文件上传并保存到服务端的方法

    在ASP.NET Core中处理文件上传是一项常见的任务,特别是在需要用户提交图片、视频、音频或文档等数据的场景下。本文将介绍如何在ASP.NET Core中实现单文件和多文件的上传,并将它们保存到服务端。 首先,我们需要...

    out文件转hex文件方法

    ### OUT文件转HEX文件方法 #### 工具介绍 在进行.OUT文件转换为.HEX文件的过程中,我们主要依赖的是TI(Texas Instruments)公司提供的一个名为`hex2000`的工具。这个工具能够帮助我们将编译链接后生成的.OUT格式的...

    Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作

    标题中的知识点主要涉及Python连接HDFS进行文件上传下载以及Pandas转换文本文件到CSV的操作。在描述中,提到了Python在Linux环境下与HDFS交互的需求,以及使用Pandas进行数据处理的场景。从标签中我们可以进一步了解...

    多文件上传 源码

    在IT行业中,多文件上传是一项常见的功能,尤其在文件共享、云存储以及社交媒体等应用场景中。这个源码可能提供了一种实现方式,允许用户同时上传多个文件,并且带有进度条显示,用户可以随时停止或删除正在上传的...

    文件上传和下载文件上传和下载文件上传和下载

    文件上传和下载是Web应用程序中的核心功能之一,无论是用户向服务器提交个人资料、分享文档,还是从服务器获取资源,如软件更新、电子书籍等,都离不开这一操作。在这个过程中,前端与后端的交互以及数据的安全传输...

    c# 用Base64实现文件上传

     使用base64进行文件上传的具体流程是:前台使用js将文件转换为base64格式,后台通过高级编程语言,将base64格式的文件,转换为原文件。下面就来演示一下,C#语言配合js,如何实现图片的base64格式上传与解析保存。...

    Vuejs文件上传组件多文件上传

    在Vue.js中,实现文件上传功能是常见的需求,尤其是在构建交互丰富的Web应用时。本篇将详细介绍Vue.js中实现多文件上传的相关知识点,以及如何使用`vue-upload-component`这个开源组件来帮助我们实现这一功能。 ...

    C# 文件转换base64

    在实际项目中,文件转Base64操作通常用于上传文件至服务器,存储在数据库中,或者在网络中以文本形式传输。了解并熟练掌握这一技巧对于C#开发者来说是非常重要的。在标签中提到的"C#文件转base64 文件转换"是一个...

    文件上传并在线浏览

    标题“文件上传并在线浏览”涉及的技术点主要是文件上传与在线预览,主要涵盖以下几个方面: 1. **文件上传**:文件上传是Web应用中常见的功能,用户可以通过选择本地文件将其上传到服务器。这一过程涉及到HTML表单...

    Hex文件转Bin文件的QT程序V1.0

    本篇将详细介绍如何使用标题为"Hex文件转Bin文件的QT程序V1.0"的工具来完成这个转换过程。 首先,我们要理解Hex文件的结构。Intel Hex格式是一种常见的十六进制文件格式,其中包含地址、数据和校验和等信息。每个...

    文件上传jar文件

    在IT行业中,文件上传是一项常见的功能,特别是在web应用中,用户可能需要上传各种类型的文件,如文档、图片或数据文件。"文件上传jar文件"这个标题指出,我们讨论的是一个包含用于实现文件上传功能的Java库的压缩包...

    android 文件上传(多个或单个),图片上传

    在Android开发中,文件上传,特别是图片上传,是常见的需求之一。这涉及到用户选择本地文件,通常是图片,然后通过网络接口将这些文件发送到服务器。本文将深入探讨如何实现Android平台上的多文件和单文件上传,以及...

    无刷新上传多个文件无刷新上传多个文件

    9. **前端库和框架支持**: 许多前端库和框架如jQuery、axios、React、Vue等都提供了方便的文件上传插件或组件,简化了开发过程,如React的`react-dropzone`、Vue的`vue-file-upload`等。 10. **用户体验优化**: ...

    sb3转html文件和exe文件超详细教程.rar

    4. 将生成的文件上传至服务器或本地Web服务器,然后在浏览器中打开HTML文件,即可看到运行的Scratch项目。 将sb3文件转换为exe文件是为了在没有安装Scratch的Windows系统上运行。这通常需要借助一些第三方软件,...

    java实现上传文件类型检测过程解析

    Java 实现上传文件类型检测过程解析是指在进行文件上传时,对上传文件的格式进行控制,以防止黑客将病毒脚本上传。单纯的将文件名的类型进行截取的方式非常容易遭到破解,上传者只需要将病毒改换文件名便可以完成...

    java实现文件批量上传

    首先,我们需要理解Java中的文件上传机制。在Java Servlet规范中,`multipart/form-data`类型的HTTP请求用于处理文件上传。`javax.servlet.http.Part`接口提供了处理上传文件的方法。通常,我们使用Servlet 3.0及...

    Linux下xlsx文件转txt文件.docx

    可以使用FTP客户端(如xftp)将xlsx文件上传到服务器。例如,将其放在 `/home/tubiao/桌面/` 目录下。然后,使用`unoconv`命令将xlsx文件转换为pdf,命令如下: ``` /usr/bin/unoconv -f pdf /home/tubiao/桌面/1...

    文件上传下载demo

    在IT行业中,文件上传下载是Web应用中常见且重要的功能之一。这个"文件上传下载demo"项目显然聚焦于实现这一功能,并对一个名为jspSmartUpload的组件进行了优化处理,特别是针对SmartUpload类进行升级,解决了文件名...

Global site tag (gtag.js) - Google Analytics