上传文件,不依赖 Jquery flash 插件,用到HTML5 input 新属性实现过滤文件格式、同时上传多个文件
1.样式
2.js
3.后台处理
4.效果图
一.样式
<style>
.divUpload {
position: relative;
} .divUploadFirst {
width: 100px;
height: 36px;
background: #666666;
color: #fff;
text-align: center;
line-height: 36px;
} .file_input {
width: 200px; /*因为file-input在部分浏览器中会自带一个输入框,需要双击才可以点击上传,放大后将其定位到div外面就好啦*/
height: 36px;
position: absolute;
left: -100px;
top: 0;
z-index: 1;
-moz-opacity: 0;
-ms-opacity: 0;
-webkit-opacity: 0;
opacity: 0; /*css属性——opcity不透明度,取值0-1*/
filter: alpha(opacity=0); /*兼容IE8及以下--filter属性是IE特有的,它还有很多其它滤镜效果,而filter: alpha(opacity=0); 兼容IE8及以下的IE浏览器(如果你的电脑IE是8以下的版本,使用某些效果是可能会有一个允许ActiveX的提示,注意点一下就ok啦)*/
cursor: pointer;
}
</style>
<div class="divUpload">
<div class="divUploadFirst" style="width:82px;height:34px;border-radius:14px;">上传协议</div>
<input type="file" class="file_input" id="txtUpload" onchange="upload()" accept="image/*" multiple >
</div>
<div class="form-group" style="clear:both">
<div id="images">
</div>
</div>
二 JS
//上传协议
function upload() {
var uploaderUrl = '@Url.Content("~/PetCase/Upload")';
var files = document.getElementById("txtUpload").files;
var fd = new FormData();
for (var i = ; i < files.length; i++) {
fd.append("file["+i+"]", files[i]);
}
fd.append('caseNum', caseNum);
$.ajax({
url:uploaderUrl,
type :"post",
data:fd,
dataType: "json",
cache: false,//上传文件无需缓存
processData: false,//用于对data参数进行序列化处理 这里必须false
contentType: false,
success:function(data){
if(data.length >){
for (var i = ; i < data.length; i++) {
imgPath.push(data[i].imgpath); var html = '<div style="width:200px;float:left;margin-left: 5px;cursor:pointer"> <div class="sh" ></div><div class="img1"><img src="' + data[i].imgpath + '" style="width:200px;" /></div></div>'
$("#images").append(html);
}
addPichtml();
}
},
error:function(){
layer.msg('上传发生错误.');
}
});
}
function addPichtml() {
$(".sh").bind('click', function () {
var $img = $(this).parent().find("img");
var ipath = $img.attr("src");
for (var i = ; i < imgPath.length; i++) {
if (imgPath[i] == ipath) {
imgPath.splice(i, );
$(this).parent().remove();
DelImgPath(ipath);
}
}
}) $(".img1").bind('click', function () {
var $img = $(this).parent().find("img");
var ipath = $img.attr("src");
for (var i = ; i < imgPath.length; i++) {
if (imgPath[i] == ipath) {
layer.open({
type: ,
title: "协议",
content: '<div><img src="' + ipath + '" /></div>',
maxmin: true,
area: [ + "px", + "px"]
})
}
}
}) }
三 后台处理
[HttpPost]
public ActionResult Upload(HttpPostedFileBase Filedata, string caseNum)
{
// 没有文件上传,直接返回
//if (Filedata == null || string.IsNullOrEmpty(Filedata.FileName) || Filedata.ContentLength == 0)
//{
// return HttpNotFound();
//} #region 另外一种方式上传
if (Request.Files == null || Request.Files.Count == )
{
return HttpNotFound();
} List<object> result = new List<object>();
for (int i = ; i < Request.Files.Count; i++)
{
Filedata = Request.Files[i];
#endregion string FileEextension = Path.GetExtension(Filedata.FileName);
string uploadYear = DateTime.Now.Year.ToString();
string uploadDate = DateTime.Now.Date.ToString("MMdd"); // string dirpath = System.Configuration.ConfigurationManager.AppSettings["WebTransferHospitalImgDirPath"];
string filepath = System.Configuration.ConfigurationManager.AppSettings["UploadProtocolPath"];
string strGUID = System.Guid.NewGuid().ToString();
strGUID = DateTime.Now.ToString("yyyMMddHHmmssfffffff")+Guid.NewGuid();//上传的图片按上传时间的先后来命名,显示再按命名来排序 string fullFileName = Server.MapPath("~/UploadFile/UploadProtocol") + "/" + uploadYear + "/" + uploadDate + "/" + caseNum + "/" + strGUID + FileEextension;
string webPath = filepath + "/" + uploadYear + "/" + uploadDate + "/" + caseNum + "/" + strGUID + FileEextension; //创建文件夹,保存文件
string path = Path.GetDirectoryName(fullFileName);
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
} Filedata.SaveAs(fullFileName); var data = new { imgpath = webPath };
result.Add(data);
} return Json(result, JsonRequestBehavior.AllowGet);
}
四 效果图



上传文件,不依赖 Jquery flash 插件,用到HTML5 input 新属性实现过滤文件格式、同时上传多个文件的更多相关文章
- web 表单方式上传文件方法(不用flash插件)
原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...
- HTML5 input date属性引起的探索——My97DatePicker(日期选择插件)
不得不说H5的input date属性真的好用,之前我写的http://www.cnblogs.com/tu-0718/p/6729274.html这篇博客里面也有提到,不过虽然移动端对H5的支持还是 ...
- 使用jQuery.form插件,实现完美的表单异步提交
传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...
- 分享一款超棒的jQuery旋钮插件 - jQuery knob
转自:http://www.cnblogs.com/gbin1/archive/2012/05/08/2489908.html 在线演示 本地下载 如果你也在寻找一款生成漂亮旋钮(knob)的jQu ...
- jquery uploadify插件多文件上传
1.jquery uploadify 下载:http://www.uploadify.com/ 2.安装:解压后拷贝的工程目录下面,如:WebRoot/uploaddify 3.配置项说明: uplo ...
- jquery 实现ajax 上传文件的功能(使用插件 ajaxfileupload)
js文件的下载地址 : http://files.cnblogs.com/wangqc/ajaxfileupload.js 页面代码: <html> <!-- 引入相关的js文 ...
- 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹
在零配置情况下,文件的上传文件夹是根目录下的Files文件夹,如何自定义文件的上传文件夹呢? □ 在web.config中配置 1: <configuration> 2: <conf ...
- 利用Jquery使用HTML5的FormData属性实现对文件的上传
1.利用Jquery使用HTML5的FormData属性实现对文件的上传 在HTML5以前我们如果需要实现文件上传服务器等功能的时候,有时候我们不得不依赖于FLASH去实现,而在HTML5到来之后,我 ...
- Uploadify & jQuery.imgAreaSelect 插件实现图片上传裁剪
在网站中需要一个图片上传裁剪的功能,借鉴这篇文章 Ajax+PHP+jQuery图片截图上传 的指点,找到了jquery.imgAreaSelect这个不错插件,能对图片进行自定义区域选择并给出坐标, ...
随机推荐
- Ant + Tomcat + Jenkins 实现自动化部署
前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkins + Ant + Tomcat 搭建了一个自动发布部署的环境 ...
- HDU5543(SummerTrainingDay03-O DP)
Pick The Sticks Time Limit: 15000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- css 实用代码汇总
1.table 排版(防止td文字过多导致table变形) table { /*为表格设置合并边框模型*/ border-collapse: collapse; border-spacing: 0; ...
- python自动化开发-4
装饰器之我见 python里的装饰器到底是个什么东东,初看起来,可能有的小伙伴会发懵啊,哈哈. 先来个装饰器的例子瞅瞅: Author:RYB # __*__coding:utf-8__*__ ''' ...
- 传统BI还是自助式BI---BI与数据分析 ZT
自助式BI或者自助式数据分析是最近几年兴起的一个概念.根据Gartner发布的信息,Self Service Business Intelligence(SSBI)被定义为“终端用户在被批准和支持的平 ...
- Android学习笔记----Java字符串MD5加密
代码如下: /** * MD5单向加密,32位,用于加密密码,因为明文密码在信道中传输不安全,明文保存在本地也不安全 * * @param str * @return */ public static ...
- EventBus结合rxjava2和retrofit2网络获取
依赖: compile 'com.squareup.retrofit2:converter-gson:2.3.0'compile 'com.squareup.retrofit2:retrofit:2. ...
- Sql Server 判断字符串是否可以转数字
主要是在sql server的内置系统函数ISNUMERIC的基础上,将例外的“+”.“-”.“$”等也进行判断. CREATE FUNCTION [dbo].[fn_IsNumberic]( @st ...
- shell脚本之数组
变量:存储单个元素的内存空间. 数组:存储多个元素的连续的内存空间. 数组名:整个数组只有一个名字: 数组索引:编号从0开始: 数组名[索引]: 引用数组中的某个元素:${ ARRAY_NAME [ ...
- Mysql基础之 事务
MySql事务 Mysql事务主要处理操作量大,复杂度高的数据. Mysql事务需要注意的三点: 1.在mysql中只有使用innodb数据库引擎的数据库或表才支持事务 2.事务处理可以用来维护数据库 ...