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 新属性实现过滤文件格式、同时上传多个文件的更多相关文章

  1. web 表单方式上传文件方法(不用flash插件)

    原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...

  2. HTML5 input date属性引起的探索——My97DatePicker(日期选择插件)

    不得不说H5的input date属性真的好用,之前我写的http://www.cnblogs.com/tu-0718/p/6729274.html这篇博客里面也有提到,不过虽然移动端对H5的支持还是 ...

  3. 使用jQuery.form插件,实现完美的表单异步提交

    传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...

  4. 分享一款超棒的jQuery旋钮插件 - jQuery knob

    转自:http://www.cnblogs.com/gbin1/archive/2012/05/08/2489908.html 在线演示  本地下载 如果你也在寻找一款生成漂亮旋钮(knob)的jQu ...

  5. jquery uploadify插件多文件上传

    1.jquery uploadify 下载:http://www.uploadify.com/ 2.安装:解压后拷贝的工程目录下面,如:WebRoot/uploaddify 3.配置项说明: uplo ...

  6. jquery 实现ajax 上传文件的功能(使用插件 ajaxfileupload)

    js文件的下载地址 : http://files.cnblogs.com/wangqc/ajaxfileupload.js 页面代码: <html>    <!-- 引入相关的js文 ...

  7. 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹

    在零配置情况下,文件的上传文件夹是根目录下的Files文件夹,如何自定义文件的上传文件夹呢? □ 在web.config中配置 1: <configuration> 2: <conf ...

  8. 利用Jquery使用HTML5的FormData属性实现对文件的上传

    1.利用Jquery使用HTML5的FormData属性实现对文件的上传 在HTML5以前我们如果需要实现文件上传服务器等功能的时候,有时候我们不得不依赖于FLASH去实现,而在HTML5到来之后,我 ...

  9. Uploadify & jQuery.imgAreaSelect 插件实现图片上传裁剪

    在网站中需要一个图片上传裁剪的功能,借鉴这篇文章 Ajax+PHP+jQuery图片截图上传 的指点,找到了jquery.imgAreaSelect这个不错插件,能对图片进行自定义区域选择并给出坐标, ...

随机推荐

  1. 微信跳一跳Python辅助无需配置一键操作

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8350329.html 邮箱:moyi@moyib ...

  2. Python 映射

    python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...

  3. JS模拟实现数组的map方法

    昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...

  4. JS点击按钮下载文件

    通过form表单提交: 由于ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以通过ajax去请求该接口是无法下载文件的,所以我们创建一个新的form元素来请求接 ...

  5. JS输入框正则校验

    1. 开发中需要对etl组件统一进行input输入框校验,允许为空,可以不校验,默认校验长度和特殊字符,代码如下,记录以备复用. /** * 数据值校验工具类 */ var checkService ...

  6. Android--判断listview上下滑动的方法

    elv_music_res_fragment.setOnScrollListener(new AbsListView.OnScrollListener() { private int mLastFir ...

  7. Linux 查看本机串口方法

    最近在了解嵌入式方面的知识,就随笔记录一下: 查看Linux本机串口: 1.查看串口是否可用 可以对串口发送数据比如对com1口,echo /dev/ttyS02.查看串口名称使用 ls -l /de ...

  8. 第五章 绘图基础(SINEWAVE)

    //SINEWAVE.C -- Sine Wave Using Polyline (c) Charles Petzold, 1998 #include <Windows.h> #inclu ...

  9. git命令设置简写(别名)

    ### git命令设置简写(别名) 前言:有时候在执行git命令比较多的情况下,每次敲git命令比较费时,同时有些命令比如cherry-pick这种比较长时更是费时,所以可以通过设置命令行简写来设置. ...

  10. 修改css的(屏蔽)overflow: hidden;实现浏览器能把网页全图保存成图片

    摘要: 1.项目需要,需要对网页内容“下载”保存成全图片 2.QQ浏览器等主流浏览器都支持这种下载保存功能 3.项目需要场景:编写好的项目维护文档,放在服务器上.如果是txt不能带图片可视化,如果wo ...