(function ($) {
$.extend($, {
fileUpload: function (options) {
var para = {
multiple: true,
filebutton: ".filePicker",
uploadButton: null,
url: "/home/MUploadImg",
filebase: "mfile",//mvc后台需要对应的名称
auto: true,
previewZoom: null,
uploadComplete: function (res) {
console.log("uploadComplete", res);
},
uploadError: function (err) {
console.log("uploadError", err);
},
onProgress: function (percent) { // 提供给外部获取单个文件的上传进度,供外部实现上传进度效果
console.log(percent);
},
};
para = $.extend(para, options);
var $self = $(para.filebutton);
//先加入一个file元素
var multiple = ""; // 设置多选的参数
para.multiple ? multiple = "multiple" : multiple = "";
$self.parent().append('<input id="fileImage" style="display:none" type="file" size="30" name="fileselect[]" ' + multiple + '>');
var doms = {
"fileToUpload": $self.parent().find("#fileImage"),
// "thumb": $self.find(".thumb"),
// "progress": $self.find(".upload-progress")
};
var core = {
fileSelected: function () {
var files = (doms.fileToUpload)[0].files;
var count = files.length;
console.log("共有" + count + "个文件");
for (var i = 0; i < count; i++) {
var item = files[i];
console.log(item.size);
if (para.auto) {
core.uploadFile(item);
}
core.previewImage(item);
}
},
uploadFile: function (file) {
console.log("开始上传");
var formdata = new FormData();
formdata.append(para.filebase, file);//这个名字要和mvc后台配合
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function (e) {
var percentComplete = Math.round(e.loaded * 100 / e.total);
para.onProgress(percentComplete.toString() + '%');
});
xhr.addEventListener("load", function (e) {
para.uploadComplete(xhr.responseText);
});
xhr.addEventListener("error", function (e) {
para.uploadError(e);
});
xhr.open("post", para.url, true);
//xhr.setRequestHeader("X_FILENAME", file.name);
xhr.send(formdata);
},
uploadFiles: function () {
var files = (doms.fileToUpload)[0].files;
for (var i = 0; i < files.length; i++) {
core.uploadFile(files[i]);
}
},
previewImage: function (file) {
if (!para.previewZoom) return;
var img = document.createElement("img");
img.file = file;
$(para.previewZoom).append(img);
// 使用FileReader方法显示图片内容
var reader = new FileReader();
reader.onload = (function (aImg) {
return function (e) {
aImg.src = e.target.result;
};
})(img);
reader.readAsDataURL(file);
}
}
doms.fileToUpload.on("change", function () {
//doms.progress.find("span").width("0");
console.log("选中了文件");
core.fileSelected();
});
console.log("初始化!");
//绑定事件
$(document).on("click", para.filebutton, function () {
console.log("clicked");
doms.fileToUpload.click();
});
if (para.uploadButton) {
$(document).on("click", para.uploadButton, function () {
core.uploadFiles();
});
}
}
});
})(Zepto);
简单讲解:上传还是得靠file元素,所以一开始就加了个隐藏的。然后通过file的change事件获得需要上传的文件并放入formdata中,再使用xmlHttpRequest发请求。进度条是直接绑定的process事件。文件预览是filereader,另外需要注意的就是filebase参数,对应的是MVC后台上传方法的参数的名称,如果不一致,后台将获取不到file。回调函数就不说了。
[HttpPost]
public ActionResult MUploadImg(HttpPostedFileBase mfile)
{
return UploadImg(mfile, "Mobile");
}

[HttpPost]
public ActionResult UploadImg(HttpPostedFileBase file, string dir = "UserImg")
{
if (CheckImg(file, imgtypes) != "ok") return Json(new { Success = false, Message = "文件格式不对!" }, JsonRequestBehavior.AllowGet);
if (file != null)
{
var path = "~/Content/UploadFiles/" + dir + "/";
var uploadpath = Server.MapPath(path);
if (!Directory.Exists(uploadpath))
{
Directory.CreateDirectory(uploadpath);
}
string fileName = Path.GetFileName(file.FileName);// 原始文件名称
string fileExtension = Path.GetExtension(fileName); // 文件扩展名
//string saveName = Guid.NewGuid() + fileExtension; // 保存文件名称 这是个好方法。
string saveName = Encrypt.GenerateOrderNumber() + fileExtension; // 保存文件名称 这是个好方法。
file.SaveAs(uploadpath + saveName);
return Json(new { Success = true, SaveName = path + saveName });
}
return Json(new { Success = false, Message = "请选择要上传的文件!" }, JsonRequestBehavior.AllowGet);
}
<div class="page" id="upload">
<h2>UploadImg</h2>
<div id="dd" class="filePicker">点击选择文件</div>
<div id="preview"></div>
</div>
<script>
$.fileUpload({ filebutton: "#dd", previewZoom: "#preview" });
</script>
扩展到$对象而不扩展到$.fn,是因为zepto中绑定事件的时候后者不方便,传递id或样式名容易绑定。手机端可以自动的调出相机和相册。默认是不预览的图片的,需要制定预览区域,进度条需要自己写样式,只返回了进度值。
相关推荐
在IT行业中,H5图片上传插件是一种广泛应用于网页端的组件,它使得用户能够在浏览器上方便快捷地上传图片。这种插件对于个人资料编辑、社交媒体互动、在线表单提交等场景尤其重要,因为它简化了图片处理流程,提高了...
"h5图片上传插件带java实现方式"的描述表明我们要探讨的是一种结合HTML5和Java技术实现的图片上传解决方案。下面将详细阐述这个主题涉及的关键知识点。 1. **HTML5 File API**: HTML5引入了File API,使得在...
本文将详细介绍一个名为“Huploadify”的H5上传插件,以及如何利用它来上传资源。 Huploadify是一个专门针对H5环境设计的上传插件,它提供了丰富的自定义选项和良好的用户体验。这个插件适用于那些需要用户上传文件...
PHPCMS V9 修改flash上传为H5上传方案 phpcms 上传功能文件
《phpcms上传插件H5版详解》 随着技术的发展,传统的基于Flash的上传插件在现代浏览器中逐渐面临淘汰,特别是在Chrome等主流浏览器中,由于安全性和性能方面的考虑,Flash已被逐步禁用。phpcms作为一款广泛使用的...
在这个背景下,"jQuery H5移动端图片预览插件"应运而生,它旨在解决移动端图片预览的问题,为用户提供流畅、高效且自适应的图片浏览体验。 这款插件主要针对手机和平板等移动设备设计,它能够无缝地集成到你的H5...
PHPCMS是一款流行的开源内容管理系统,它为网站开发者提供了丰富的功能,包括文章发布、图片管理、文件上传等。然而,随着技术的发展,Adobe Flash逐渐被淘汰,尤其是谷歌浏览器已经不再支持Flash,这使得基于Flash...
移动h5开发避免不了上传图片,一般我们使用html自带的控件input或者使用微信上传API。但微信上传API不是任何地方都可以使用的,使用html自带的控件input上传又免不了图片体积太大,上传不稳定。localResizeIMG4就是...
总的来说,无论是PhotoSwipe还是SuperSlide,它们都是H5图片展示领域的有力工具。开发者可以根据项目需求,选择合适的插件,利用这些强大的库来提升用户的交互体验,打造高质量的H5页面。在实际开发过程中,理解每个...
在本文中,我们将深入探讨基于H5的Web端上传插件及其在EasyUI框架中的应用。首先,让我们理解H5(HTML5)的核心概念。HTML5是超文本标记语言的最新版本,它提供了许多增强功能,如离线存储、媒体元素、拖放功能以及...
HTML5是一种先进的网页标记语言,它在传统的...综上所述,HTML5批量图片上传插件是通过利用HTML5的新特性,结合JavaScript和后端技术来实现的。它提升了用户体验,简化了开发者的工作,是现代网页开发中的重要一环。
通过以上步骤,我们可以创建一个功能完备且具有良好用户体验的H5图片上传控件。需要注意的是,尽管前端实现了大部分功能,但后台服务器也需要支持接收并处理这些文件,通常涉及文件存储、权限控制、安全验证等方面。...
phpcms原系统图片上传插件不能使用,phpcms上传按钮不能点击。由于谷歌浏览器宣布不再支持flash上传的方式,而phpcms默认的正是flash上传,我们只能改为H5上传,此版本使用webuploader.js,感觉这个挺强大,自动识别...
Uploadify是一个JavaScript上传组件,而其H5版本uploadifive则是针对现代浏览器,特别是移动设备优化的,利用HTML5的技术特性实现图片上传功能。 HTML5是超文本标记语言的第五代标准,它引入了多项新特性,如本地...
本文将详细讲解“jQuery图片上传插件”,它支持多图批量上传和多文件批量上传功能,适用于各种网页应用。 首先,jQuery是一个轻量级、高性能的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作和Ajax交互等...
这个压缩包文件的内容显然是关于如何在KindEditor中自定义添加网络视频插件以及将原有的Flash批量图片上传方式替换为H5(HTML5)上传方式。下面我们将深入探讨这两个主题。 首先,让我们了解网络视频插件的自定义...
webuploader图片上传插件是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在新出的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流的IE浏览器,沿用原来的FLASH运行时,...
在H5应用中,文件上传是一项常见的功能,尤其在网页端的交互设计中,用户可能需要上传图片、文档等各类文件。`easyUploader.js`是一个轻量级的JavaScript插件,专为H5文件上传而设计,提供了一套简单易用的API接口,...
3. 无需插件:与Flash不同,H5上传无需安装额外插件,减少了用户操作步骤。 4. 拖放功能:H5支持拖放上传,提高了用户交互性。 二、PHP CMS的上传机制 理解PHP CMS原有的上传机制是实现H5上传的基础。PHPCMS的上传...
在phpcms V9中,图片上传通常依赖于Flash插件,这是因为在早期的Web开发中,Flash是实现文件上传的主要技术。然而,随着HTML5的发展,新的File API使得在浏览器端处理文件变得更为便捷,而且无需依赖外部插件,如...