C#实现文件上传以及多文件上传功能

一、前端搭建

1、前端用到js:uploadify(下载地址:http://www.uploadify.com/download/)、layer (下载地址:http://layer.layui.com/),下载之后把它们放在你的项目里 列如

2、根据你的需要在你项目适当的位置建立上传文件的目录  列如(File)

到此前端搭建结束

二、配置文件修改(可选择跳过此步骤)

1、首先说明下,这个步骤可以跳过,此步骤主要是修改上传文件大小的限制(.net 默认最大只能上传4M)如若需要修改请继续阅读该步骤。

2、打开web.config 配置文件 找到<system.web> 节点 ,在该节点下面添加如下节点

<httpRuntime targetFramework="4.5"  executionTimeout="500" maxRequestLength="409600" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" />
<!-- maxRequestLength属性是上传文件大小的设置 值是kb大小 maxRequestLength=“1024” 为最大上传1M -->

三、代码编写

1、说明下:我用的是mvc模式 所以这里就用mvc的方式编写 (代码是不变的,开发者可以根据你们的设计模式编写)

2、建立一个控制器PageBaseController在该控制器里编写如下代码 (如果是用的aspx页面那么把FileUpdateView方法删掉  ,把UploadifyFile 方法的ActionResult改成void  并去掉return null;) 

后端代码如下

/// <summary>
    /// 文件上传页面
    /// </summary>
    /// <returns></returns>
    public ActionResult FileUpdateView()
    {
      return View();
    }

    /// <summary>
    /// 文件处理方法
    /// </summary>
    /// <param name="filedata"></param>
    /// <returns></returns>
    public ActionResult UploadifyFile(HttpPostedFileBase filedata)
    {
      if (filedata == null ||
        String.IsNullOrEmpty(filedata.FileName) ||
        filedata.ContentLength == 0)
      {
        return HttpNotFound();
      }

      string filename = System.IO.Path.GetFileName(filedata.FileName);
      string virtualPath = String.Format("~/File/{0}", filename);

      string path = Server.MapPath(virtualPath);
      // 以下注释的代码 都可以获得文件属性
      // System.Diagnostics.FileVersionInfo info = System.Diagnostics.FileVersionInfo.GetVersionInfo(path);
      // FileInfo file = new FileInfo(filedata.FileName);

      filedata.SaveAs(path);
      return null;
    } 

注:virtualPath 是我们搭建上传文件的目录

3、在视图(页面)里引用我们搭建的js:uploadfiy 、layer 路径

列如:

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/lib/layer/layer.js"></script>
<link href="~/Scripts/lib/uploadify/uploadify.css" rel="external nofollow" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/lib/uploadify/jquery.uploadify.min.js"></script>

注:这里我们用到了jquery

4、前端代码

<script type="text/javascript">
  var uploadifyOnSelectError;
  var uploadifyOnUploadError;
  var uploadifyOnSelect;
  var uploadifyOnUploadSuccess;
  uploadifyOnSelectError = function (file, errorCode, errorMsg) {
    var msgText = "上传失败\n";
    switch (errorCode) {
      case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
        //this.queueData.errorMsg = "每次最多上传 " + this.settings.queueSizeLimit + "个文件";
        msgText += "每次最多上传 " + this.settings.queueSizeLimit + "个文件";
        break;
      case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
        msgText += "文件大小超过限制( " + this.settings.fileSizeLimit + " )";
        break;
      case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
        msgText += "文件大小为0";
        break;
      case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
        msgText += "文件格式不正确,仅限 " + this.settings.fileTypeExts;
        break;
      default:
        msgText += "错误代码:" + errorCode + "\n" + errorMsg;
    }
    layer.msg(msgText);
  };
  uploadifyOnUploadError = function (file, errorCode, errorMsg, errorString) {
    // 手工取消不弹出提示
    if (errorCode == SWFUpload.UPLOAD_ERROR.FILE_CANCELLED
      || errorCode == SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED) {
      return;
    }
    var msgText = "上传失败\n";
    switch (errorCode) {
      case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
        msgText += "HTTP 错误\n" + errorMsg;
        break;
      case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
        msgText += "上传文件丢失,请重新上传";
        break;
      case SWFUpload.UPLOAD_ERROR.IO_ERROR:
        msgText += "IO错误";
        break;
      case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
        msgText += "安全性错误\n" + errorMsg;
        break;
      case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
        msgText += "每次最多上传 " + this.settings.uploadLimit + "个";
        break;
      case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
        msgText += errorMsg;
        break;
      case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
        msgText += "找不到指定文件,请重新操作";
        break;
      case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
        msgText += "参数错误";
        break;
      default:
        msgText += "文件:" + file.name + "\n错误码:" + errorCode + "\n"
          + errorMsg + "\n" + errorString;
    }
    layer.msg(msgText);
  };

  uploadifyOnSelect = function () {
  };
  uploadifyOnUploadSuccess = function (file, data, response) {
    layer.msg(file.name + "\n\n" + response + "\n\n" + data);
  };
  $(function () {

    $("#uploadify").uploadify({
      uploader: '/PageBase/UploadifyFun', //处理上传的方法
      swf: '/Scripts/lib/uploadify/uploadify.swf',
      width: 80, // 按钮宽度
      height: 60, //按钮高度
      buttonText: "上传文件",
      buttonCursor: 'hand',
      fileSizeLimit:20480,
      fileobjName: 'Filedata',
      fileTypeExts: '*.xlsx;*.docx', //扩展名
      fileTypeDesc: "请选择xslx,docx文件", //文件说明
      auto: false, //是否自动上传
      multi: true, //是否一次可以选中多个文件
      queueSizeLimit: 5, //允许同时上传文件的个数
      overrideEvents: ['onSelectError', 'onDialogClose'], // 是否要默认提示 要就不配置
      onSelect: uploadifyOnSelect,
      onSelectError: uploadifyOnSelectError,
      onUploadError: uploadifyOnUploadError,
      onUploadSuccess: uploadifyOnUploadSuccess
    });
  });
</script>
<span id="uploadify"></span>
<div>
  <a href="javascript:$('#uploadify').uploadify('upload','*');">上传</a>
  <a href="javascript:$('#uploadify').uploadify('cancel', '*');">取消</a>
</div>

注:fileSizeLimit 属性的值最好和我们web.config 里设置的文件上传最大值一样(不能大于这个值)

到这里。我们文件上传就结束了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C# 文件上传 默认最大为4M的解决方法

    1,环境:window 2003 ,IIS6.0 要首先要修改IIS6.0中的asp请求的最大字节数,默认时为200K: 方法:打开位于 C:\Windows\System32\Inetsrv 中的 metabase.XML, 并修改 AspMaxRequestEntityAllowed 为你需要的值(例如 "1073741824", 1GB): 技术背景: 在 IIS 6.0 中, AspMaxRequestEntityAllowed 属性指定了一个 ASP 请求(Request)可

  • C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法

    本文实例讲述了C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法,在项目开发中有一定的实用价值,具体方法如下: 一.前言: 这篇文章翻译来自madmik3 写在 CodeProject 上的文章,原标题为: C#'s WebClient.UploadFile with more functionality. 二.正文: 我们使用 WebRequest 来获取网页内容是非常简单的,可是用他来上传文件就没有那么简单了. 如果我们在网页中上传文件,加入下面代码即可: HTML 文

  • asp.net(c#)开发中的文件上传组件uploadify的使用方法(带进度条)

    在Web开发中,有很多可以上传的组件模块,利用HTML的File控件的上传也是一种办法,不过这种方式,需要处理的细节比较多,而且只能支持单文件的操作.在目前Web开发中用的比较多的,可能uploadify(参考http://www.uploadify.com/)也算一个吧,不过这个版本一直在变化,他们的脚本调用也有很大的不同,甚至调用及参数都一直在变化,很早的时候,那个Flash的按钮文字还没法变化,本篇随笔主要根据项目实际,介绍一下3.1版本的uploadify的控件使用,这版本目前还是最新的

  • C#实现HTTP上传文件的方法

    本文实例讲述了C#实现HTTP上传文件的方法.分享给大家供大家参考.具体实现方法如下: 发送文件代码如下: 复制代码 代码如下: /// <summary> /// Http上传文件 /// </summary> public static string HttpUploadFile(string url, string path) {     // 设置参数     HttpWebRequest request = WebRequest.Create(url) as HttpWe

  • C#判断上传文件是否是图片以防止木马上传的方法

    很多时候木马程序会伪装成其他格式的文件上传到网站,最常见的如图片格式.本文就以C#为例讲述C#判断上传文件是否是图片以防止木马上传的方法,具体方法如下: 方法一:用image对象判断是否为图片 /// <summary> /// 判断文件是否为图片 /// </summary> /// <param name="path">文件的完整路径</param> /// <returns>返回结果</returns> pu

  • C#实现Web文件上传的两种方法实例代码

    1. C#实现Web文件的上传 使用C#如何实现文件上传的功能呢?下面笔者简要介绍一下. 首先,在你的Visual C# web project 中增加一个上传用的Web Form,为了要上传文件,需要在ToolBox中选择HTML类的File Field控件,将此控件加入到Web Form中,然而此时该控件还不是服务端控件,我们需要为它加上如下一段代码:<input id=PreviousFile1 type=file size=49 runat="server">,这样

  • ASP.NET(C#)实现一次性动态上传多张图片的代码(多个文件)

    在做asp.net的Web开发的时候,我们经常会遇到一次性上传多个文件的需求.通常我们的解决方法是固定放多个上传文件框,这样的解决办法显然是不合理的,因为一次上传多个,就意味着数量不确定.因此我们就要让这些文件上传框动态添加,下面我以我做的一个图库管理中的上传图片的功能为例 先看效果: 打开的初始界面: 默认是上传一个图片,但当我们点"增加图片"按钮时可以实现选择多个图片及其描述同时上传,本功能限制一次最多只能上传8张,且每张图片大小不超过1M,这个大家可根据实际情况更改! 如图: 下

  • C# 通用文件上传类

    1.Upfile.aspx: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http

  • jQuery结合C#实现上传文件的方法

    本文实例讲述了jQuery结合C#实现上传文件的方法.分享给大家供大家参考.具体实现方法如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <script src="jquery-1.7.1.min.js"></script> <script src="j

  • asp.net(C#)中上传大文件的几中常见应用方法

    几种常见的方法,本文主要内容包括: 第一部分:首先我们来说一下如何解决ASP.net中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改Web.Config文件来自定义最大文件大小,如下: 这样上传文件的最大值就变成了4M,但这样并不能让我们无限的扩大 MaxRequestLength的值,因为ASP.NET会将全部文件载入内存后,再加以处理.解决的方法是利用隐含的 HttpWorkerRequest,用它的GetPreloaded

随机推荐