ajaxfileupload批量上传文件+图片尺寸限制
1.首先展示ajaxfileupload代码,在这里修改为批量上传
//ajaxfileupload不展示全部代码,这是修改前与修改后代码对比,目的是上传多个文件 createUploadForm: function (id, fileElementId, data) {
//create form
var formId = 'jUploadForm' + id;
var fileId = 'jUploadFile' + id;
var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
if (data) {
for (var i in data) {
jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
}
}
//修改前代码-------
// var oldElement = jQuery('#' + fileElementId);
// var newElement = jQuery(oldElement).clone();
// jQuery(oldElement).attr('id', fileId);
// jQuery(oldElement).before(newElement);
// jQuery(oldElement).appendTo(form);
//修改前代码------- //修改后代码-------
for (var i in fileElementId) {
var oldElement = jQuery('#' + fileElementId[i]);
var newElement = jQuery(oldElement).clone();
jQuery(oldElement).attr('id', fileId);
jQuery(oldElement).before(newElement);
jQuery(oldElement).appendTo(form);
}
//修改后代码------- //set attributes
jQuery(form).css('position', 'absolute');
jQuery(form).css('top', '-1200px');
jQuery(form).css('left', '-1200px');
jQuery(form).appendTo('body');
return form;
},
2.展示js代码 (里面layer为第三方插件忽略改为alert即可)
//检查尺寸是否符合规范
function uploadImgCheckedPx(f, w, h, callback) {
var reader = new FileReader();
reader.onload = function (e) {
//判断图片尺寸
var img = null;
img = document.createElement("img");
document.body.insertAdjacentElement("beforeend", img);
img.style.visibility = "hidden";
img.src = this.result;
var imgwidth = img.naturalWidth;
var imgheight = img.naturalHeight;
if (imgwidth != w || imgheight != h) {
document.body.removeChild(img);
//隐藏
layer.closeAll('loading');
layer.alert("图片尺寸必须是" + w + "x" + h + "!");
callback && callback(false);
} else {
callback && callback(true);
}
}
var files = f.files;
if (files.length > 0)
reader.readAsDataURL(files[0]);
}
//上传图片到百度云(这里是向后台提交文件,然后后台进行上传百度云等云服务器)
function uploadImgBack(inputArray, callback) {
$.ajaxFileUpload
({
url: "/Handler/ImgFileUpload.ashx", //用于文件上传的服务器端请求地址
async: true,
secureuri: false, //一般设置为false
//fileElementId: 'uploadfile1', //修改前代码
fileElementId: inputArray, //已数组方式存储 input Id
dataType: 'json', //返回值类型 一般设置为json
//不能用success,否则不执行
complete: function (data) {
try { data = jQuery.parseJSON(data.responseXML.documentElement.innerText); } catch (e) { data = jQuery.parseJSON(data.responseXML.documentElement.textContent); }
if (data.state == "0") {
callback && callback(data.msg);
} else {
//隐藏
layer.closeAll('loading');
layer.alert(data.msg);
callback && callback(-1);
}
}
});
}
//上传图片
/*
inputArray 上传inputId 数组
callback 成功后回调函数
w, px宽
h, px高
*/
function uploadImg(inputArray, callback, w, h) {
if (w && h) {
var resStateArray = [];
for (var i = 0; i < inputArray.length; i++) {
var f = document.getElementById(inputArray[i]);
uploadImgCheckedPx(f, w, h, function (state) {
resStateArray.push(state);
});
}
var tempInterval = setInterval(function () {
console.log(resStateArray);
if (resStateArray.length == inputArray.length) {
clearInterval(tempInterval);
if (resStateArray.indexOf(false) != -1) {
callback && callback(-1);
} else {
uploadImgBack(inputArray, function (res) {
callback && callback(res);
});
}
}
}, 500);
} else {
uploadImgBack(inputArray, function (res) {
callback && callback(res);
});
}
}
3.展示html 调用js封装代码进行提交
<input type="file" name="name" id="uploadBigImg1" hidden onchange="preImg(this.id,'BigImg1');" readonly datatype="*" nullmsg="请选择图片!" />
<input type="file" name="name" id="uploadBigImg2" hidden onchange="preImg(this.id,'BigImg2');" readonly />
<input type="file" name="name" id="uploadBigImg3" hidden onchange="preImg(this.id,'BigImg3');" readonly />
var imgBigArrar = [];
imgBigArrar.push("uploadBigImg1");
imgBigArrar.push("uploadBigImg2");
imgBigArrar.push("uploadBigImg3");
//调用Js
uploadImg(imgBigArrar, function (res) {
if (res != -1) {
//res 是上传完成的云资源
//
}
}, 1242, 496);
//1242 宽,496高 不加即为不限制尺寸大小
//后台C# 代码接收请求
public class ImgFileUpload : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain"; string path = "";
string msg = "";
if (path.LastIndexOf('/') != path.Length - ) path += "/"; var files = HttpContext.Current.Request.Files;
//do something ....
}
}
ajaxfileupload批量上传文件+图片尺寸限制的更多相关文章
- TP3.2批量上传文件(图片),解决同名冲突问题
1.html <form action="{:U('Upload/index')}" enctype="multipart/form-data" meth ...
- 【转】JQuery插件ajaxFileUpload 异步上传文件(PHP版)
前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现a ...
- JQuery插件ajaxFileUpload 异步上传文件(PHP版)
太久没写博客了,真的是太忙了.善于总结,进步才会更快啊.不多说,直接进入主题. 前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错 ...
- 百度编辑器ueditor批量上传图片或者批量上传文件时,文件名称和内容不符合,错位问题
百度编辑器ueditor批量上传附件时,上传后的文件和实际文件名称错误,比如实际是文件名“dongcoder.xls”,上传后可能就成了“懂客.xls”.原因就是,上传文件时是异步上传,同时进行,导致 ...
- Linux命令之rz - 批量上传文件,简单易用(转载)
用途说明 rz命令能够批量上传文件,当然也可上传单个文件啦.使用的协议是古老的ZMODEM协议,尽管协议古老,但毫不影响的简单易用的特性.一般情 况我们要上传文件到Linux系统,要么使用ftp(还得 ...
- 转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder
请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Andr ...
- 不带插件 ,自己写js,实现批量上传文件及进度显示
今天接受项目中要完成文件批量上传文件而且还要显示上传进度,一开始觉得这个应该不是很麻烦,当我在做的时候遇到了很多问题,很头疼啊. 不过看了别人写的代码,自己也测试过,发现网上好多都存在一些问题,并不是 ...
- Python基于Python实现批量上传文件或目录到不同的Linux服务器
基于Python实现批量上传文件或目录到不同的Linux服务器 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...
- input file multiple 批量上传文件
这几天维护系统,有一个批量上传文件功能,出现了一点小问题 我的笔记本选择要上传的文件很正常 但在测试环境上,别人的电脑上,选择上传文件之后 一开始,以为是代码问题,网上找了很多的资料,但还是没用,然后 ...
随机推荐
- 将js进行到底:node学习笔记1
废话:自高中以来一直对编程充满激情,磨剑五年,如今要毕业了,我不想用我已经擅长的知识敷衍,而想以一个全新的领域去面向我的毕设--是时候学习一下node.js node.js基础 对于JavaScrip ...
- Java Reflection(getXXX和getDeclaredXXX)
package com.sunchao.reflection; public class Person { private int age ; private String name; public ...
- 用photoshop将图片四角变成圆角
1.用PS打开一张图片,用矩形选框工具,选出你要保留的的那一部分,"选择→修改→平滑".在弹出的选框里添入数值,值越大角就越圆. 2.然后选择"选择→反选"再按 ...
- js_8_dom标签
创:9_3_2017 星期4 修: 对于在a标签中,如何阻止跳转? 定义一个事件,事件顺序执行后才执行跳转,如果事件函数返回false,则后面事件就不触发 事件1 = "return 函数 ...
- Storm保证消息处理
Guaranteeing Message Processing Storm保证每一个tuple被完全处理.Strom中一个核心的机制是它提供了一种跟踪tuple血统的能力,它使用了一种十分有效的方式跟 ...
- linkin大话面向对象--内部类
内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. ...
- libev学习代码
- linux之cut命令简单用法
语法 cut [-bn] [file] cut [-c] [file] cut [-df] [file] 使用说明: cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出 ...
- mysql与nagios的结合使用
一. 对mysql建库建表,并测试数据 基本信息:库名:nh_nagios表名:nagios_alerts [root@nhserver2 ~]# mysql -u root -pEnter pass ...
- 取IP的几个方法
ifconfig eth0|grep " inet add"|cut -d":" -f2|cut -d " " -f1 ifconfig e ...