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 == )
- {
- 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="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: , // 按钮宽度
- height: , //按钮高度
- buttonText: "上传文件",
- buttonCursor: 'hand',
- fileSizeLimit:,
- fileobjName: 'Filedata',
- fileTypeExts: '*.xlsx;*.docx', //扩展名
- fileTypeDesc: "请选择xslx,docx文件", //文件说明
- auto: false, //是否自动上传
- multi: true, //是否一次可以选中多个文件
- queueSizeLimit: , //允许同时上传文件的个数
- 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 里设置的文件上传最大值一样(不能大于这个值)
到这里。我们文件上传就结束了。
喜欢我的文章就关注我吧,有疑问可以留言。
C# 文件上传(可以多文件上传)的更多相关文章
- 强大的支持多文件上传的jQuery文件上传插件Uploadify
支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...
- spring mvc文件上传(单个文件上传|多个文件上传)
单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包 1.所需jar包: commons-fileupload-1.3.1.jar ...
- php实现文件上传与下载(上)
php实现文件的上传与下载是一个挺基本的功能,一般网站多多少少都会有这样的需求在内,当然不是说所有的文件都可以被上传,那这网络就太没有安全性可言了.因为接触php时间不长,今天写练练手,随笔也就是公开 ...
- SecureCRT上传和下载文件
SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...
- thinkphp如何一次性的上传多个文件,在文件域中可以多选?
可以做到类似于某度网盘的样式吗? 文件夹的命名, 可以用单数, 也可以用复数, 在同一个项目中, 只要统一就好了. 毕竟项目开发不同于英语写作. 建议使用缩写, 不管是不是缩写都用单数, 这样简洁,容 ...
- Drupal8重命名上传的中文名文件
完整的模块代码文件在Coding.net上,想直接使用的请前往下载:https://coding.net/u/yamus/p/chinese_rename/git/tree/master 最近吧Dru ...
- WordPress上传含有中文文件出现乱码
最近打算学习安装配置WordPress,当然同时也在学习PHP+MySQL,希望以后能做一些关于WordPress定制和二次开发,包括主题和插件.在成功安装WordPress3.5中文版之后,就测试了 ...
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
读取Excale表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; ...
- 11、只允许在主目录下上传和下载文件,不允许用putty登录
创建用户xiao, 使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...
- springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传
总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...
随机推荐
- Java中类的继承,属性和方法的四种修饰符的作用范围,final关键字,java的三大特点中的2个:封装和多态,以及多态的一个设计模式,模板方法模式(template method)
(一)Java中的继承: 关于继承,在Java中类的继承只能是单继承,不像C+++那样灵活,可以多继承,多继承的后果就是各种关系乱套,就相当于一个孩子有2个母亲一样,社会关系的复杂,不利于程序后期的开 ...
- Linux之shell编程函数使用
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 原文和作者一起讨论:http://www.cnblogs.com/int ...
- UE32修改TAB键为空格键
- NPM(Node.js) 使用介绍
前言:express 推出了4.X,自己尝试了一下,出现了各种问题.结果查看了各种文档和问题,现在在这个给大家分享下4.X版本的安装. NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具, ...
- matlab实现可调节占空比的方波
我大概讲一下实现的原理:正弦波移相φ,当使得大于sin(φ)的值为1,其他值为-1,占空比就跟这个φ值之间有联系. 占空比原理图如下所示. 结果上图,可以实现调节占空比,方波频率,方波个数. 下面是函 ...
- 看Lucene源码必须知道的基本规则和算法
上中学的时候写作文,最喜欢的季节我都是写冬天.虽然是因为写冬天的人比较少,那时确实也是对其他季节没有什么特殊的偏好,反而一到冬天,自己皮肤会变得特别白.但是冬天啊,看到的只有四季常青盆栽:瓜栗(就是发 ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- Linux Smaba服务器配置
Linux系统默认已经安装了Samba,但是没有安装Samba服务: 1,先查看安装情况:rpm -qa|grep samba 根据系统的安装情况选择下载或者通过光驱安装所缺的rpm包. 我的安装情况 ...
- 什么是javascript的回调函数?
回调函数(callback) 基本上每本书里都会提一提实际上我们几乎每天都在用回调函数,那么如果问你到底什么是回调函数呢? 1. 回调函数是作为参数传递给另一个函数 2. 函数运行到某种程度时,执行回 ...
- javascript核心概念——new
如果完全没有编程经验的朋友看到这个词会想到什么? 上过幼儿园的都知道new表示 "新的" 的意思. var a = new Date() 按照字面的意思表示什么? 把一个新的dat ...