需要引入 plupload.full.min.js
自己构造方法uploadJs.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <script type="text/javascript"> var uploader = null; var lastFile = null; var clear = false; var fileArray = []; /* *======data数据===== * buttonId 触发文件选择对话框的按钮,为那个元素id * spanId 用来显是信息的标签 * fileTypes 允许上传的文件类型 例如:"bmp,jpg,jpeg,gif,png" * uploadUrl 上传的服务器地址 * multiSelection 是否可以选择多个文件 * multipartParams 上传时的附加参数,以键/值对的形式传入 * uploadImmed 选择文件后立即上传 * buttonId, spanId, fileTypes, uploadUrl, multiSelection, multipartParams, uploadImmed *=====data==== * commit 文件上传成功后的回调方法 */ function initUploadMultipilePlugin(config, commit) { uploader = null; lastFile = null; fileArray = []; var mimeTypes = []; if(config.fileTypes != null && config.fileTypes != ""){ mimeTypes = [ { title : "files", extensions : config.fileTypes } ]; } uploader = new plupload.Uploader({ browse_button : config.buttonId, //触发文件选择对话框的按钮,为那个元素id url : config.uploadUrl, //服务器端的上传页面地址 filters: { mime_types : mimeTypes, max_file_size : '102400kb', //最大只能上传100M的文件 prevent_duplicates : true //不允许选取重复文件 }, multi_selection: config.multiSelection,//是否可以选择多个文件 multi_upload: config.multiUpload,//是否一次上传多个文件 file_data_name: 'upload',//指定文件上传时文件域的名称 multipart_params: config.multipartParams //上传时的附加参数,以键/值对的形式传入 }); uploader.init(); uploader.bind('FilesAdded', function(uploader, files){ if (clear) { $("#"+config.spanId).html(""); fileArray = []; clear = false; } if(!config.multiUpload && uploader.files.length > 1){ uploader.removeFile(files[0]); } plupload.each(files, function(file) { var tmp = $("#"+config.spanId).html(); $("#"+config.spanId).html(tmp + "<div id='"+file.id+"'>" + file.name + " 等待上传("+plupload.formatSize(file.size)+")"); lastFile = file.id; }); if(config.uploadImmed){ uploader.start(); } }); uploader.bind('FilesRemoved', function(uploader, files){ $("#"+config.spanId).html(""); }); uploader.bind('Error', function(uploader, err){ $("#" + err.file.id).html(err.file.name + " 上传错误,错误码:" + err.code + ",错误信息:" +err.message); if (lastFile == err.file.id){ clear = true; lastFile = null; commit(); } }); uploader.bind('UploadProgress', function(uploader, file){ $("#" + file.id).html(file.name + " 上传中...上传进度:" + file.percent +"%"); }); uploader.bind('FileUploaded', function(uploader, file, res){ var result = JSON.parse(res.response); if (result.success) { $("#" + file.id).html(file.name + " 上传成功"); var obj = new Object(); obj.newFileName = result.newFileName; obj.oldFileName = result.oldFileName; obj.filePath = result.filePath; obj.webUrl = result.webUrl; fileArray.push(obj); } else { $("#" + file.id).html(file.name + " " + result.msg); } }); uploader.bind('UploadComplete', function(uploader, files){ clear = true; lastFile = null; commit(); }); } function deleteAttach(attachId) { layer.confirm("一旦删除不能恢复哦...确定删除该附件?", { btn: ["确定","取消"], //按钮 shade: 0.1 //显示遮罩 }, function(){ msg("正在处理中...");// 为了让对话框马上消失 $(".btn-default").button('loading'); $(".btn-primary").button('loading'); $(".btn-link").button('loading'); var url = "${ctx}/web/file/delete"; $.ajax( { url : url, type : 'post', data : { attachId: attachId }, dataType : 'text', timeout : 60000, error : function(e) { $(".btn-link").button('reset'); $(".btn-default").button('reset'); $(".btn-primary").button('reset'); msgs("连接服务器超时,请稍后再试."); }, success : function(result) { if (!isOutTime(result)) { $(".btn-link").button('reset'); $(".btn-default").button('reset'); $(".btn-primary").button('reset'); result = JSON.parse(result); if (result.success) { msg(result.msg); $("#"+attachId+"_pic").remove(); } else { msgs(result.msg); } } } }); }); } </script>
调用方法为:
<button id="selectFile" class="btn btn-link" type="button" data-toggle="button" data-loading-text="<i class='icon-pencil'></i> 修改附件"><i class="icon-pencil"></i> 修改附件</button> <span class="help-block" id="selectFileName"></span>
var config = { "uploadUrl": "${ctx}/web/file/upload", "spanId": "selectFileName", "uploadImmed": false, "multiSelection": false, "buttonId": "selectFile", "multiUpload": false,//只允许上传一个附件 "fileTypes": "jpg,jepg,gif,bmp,png" }; initUploadMultipilePlugin(config, commitEdit);
需要注意的是各个参数的含义
commitEdit为callback函数,表数据保存在callback函数中执行。
相关推荐
在.NET MVC框架中,我们可以利用Plupload来构建用户友好的文件上传功能,提供断点续传、批量上传、进度条显示等特性。本示例将详细介绍如何在.NET MVC项目中集成并使用Plupload。 1. **Plupload组件介绍** ...
Plupload 是一个强大的多浏览器文件上传组件,支持各种浏览器环境,包括IE6+、Firefox、Chrome、...总的来说,Plupload结合`jquery.plupload.queue`和C#后端的Ajax处理,可以构建出高效且友好的文件批量上传解决方案。
2. **Ajax上传**:利用Ajax技术,Plupload可以在不刷新页面的情况下实现文件的异步上传,提高用户体验。用户可以随时添加、删除文件,而无需等待整个上传过程完成。 3. **多文件选择**:Plupload允许用户一次性选择...
6. **批量上传优化**:为了提高性能,可以设置plupload以并发的方式上传多个文件,减少用户的等待时间。同时,利用PHP的异步处理或队列系统,可以进一步优化服务器资源的利用。 7. **用户体验**:在前端设计上,...
在现代Web应用中,"Ajax上传文件"是一个重要的技术,它允许用户在不刷新整个页面的情况下,通过异步方式上传文件。这种方式极大地提升了用户体验,因为它提供了实时反馈,并减少了页面加载时间。下面我们将深入探讨...
在Web开发中,用户经常需要上传文件,如图片、文档等。传统的文件上传方式是通过表单提交,页面会跳转或者刷新,这在用户体验上并不理想。Ajax技术的出现改变了这一情况,它使得在不刷新整个页面的情况下,可以实现...
Ajax文件上传的基本思想是通过JavaScript创建XMLHttpRequest对象,利用FormData对象将文件数据封装,然后发送POST请求到服务器。服务器处理完文件后,返回响应结果,前端通过Ajax回调处理这些结果,实现无刷新的文件...
本教程将详细介绍如何利用`swfupload`和Ajax实现多文件上传、下载、删除,并将上传的文件信息存储到数据库。 首先,`swfupload`是一个开源的文件上传组件,它支持多文件选择、预览、进度条显示等功能。由于Flash在...
在现代Web应用中,文件上传是一项常见的功能,而利用AJAX技术实现的异步文件上传不仅可以提高用户体验,还能实现文件上传进度的实时显示。本文将深入讲解如何使用AJAX、JavaScript、Java和Servlet来实现一个自定义的...
本文实例讲述了jQuery实现文件编码成base64并通过AJAX上传的方法。分享给大家供大家参考,具体如下: 使用AJAX是无法直接上传文件的,一般都是新建个iframe在它里面完成表单提交的过程以达到异步上传文件的效果。 ...
- **AJAX调用**:前端通过JavaScript发送异步请求,每次上传文件块,服务器端接收并保存。 - **进度反馈**:利用Ajax回调或WebSockets实时更新上传进度,显示在用户界面上。 6. **安全性**:在实现大文件上传时,...
AjaxUpload是一种基于JavaScript和Ajax技术实现的异步文件上传方式,它允许用户在不刷新整个网页的情况下上传文件,显著提升了用户体验。AjaxUpload的核心是利用XMLHttpRequest对象与服务器进行交互,通过创建隐藏的...
**Ajax上传图片或文件技术详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在现代Web应用中,它被广泛用于实现页面的异步交互,提升用户体验。本篇...
市面上有许多现成的Ajax图片上传插件,如jQuery File Upload、Plupload、Dropzone.js等。这些插件提供了丰富的配置选项和API,简化了开发过程,同时也提供了预览、多文件上传、拖拽上传等功能。 10. **用户体验...
在本文中,我们将深入探讨如何在Anthem.NET 1.5框架中利用FileUpload控件实现Ajax方式的文件上传。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下进行部分页面更新,从而提供更好的...
Ajax-Uploader的工作原理是通过JavaScript监听文件输入元素的变化,当用户选择文件后,控件会创建一个或多个XMLHttpRequest对象,利用Ajax技术将文件数据分块发送到服务器。这种方式可以避免一次性加载大量文件导致...
防止恶意用户利用此功能进行DoS攻击,可以限制单个文件大小、设置上传速率限制,以及验证上传文件类型等。 总结,CodeIgniter结合Plupload的分块上传方案,通过将大文件拆分成小块,提高了文件上传的稳定性和效率。...
Ajax上传原理 Ajax(Asynchronous JavaScript and XML)技术允许在不刷新整个页面的情况下与服务器进行数据交换,从而实现了页面的异步更新。在多图片上传场景中,Ajax可以实现图片逐个上传,同时更新页面上的预览...
6. **Ajax上传**:plupload通常采用异步(Ajax)方式进行文件上传,这意味着文件上传可以在后台进行,而不会阻塞用户界面。这样用户可以继续浏览页面,甚至可以同时执行其他操作,提高了交互的流畅性。 7. **安全性...
在实际应用中,`plupload.full.min.js` 需要与服务器端的处理脚本配合使用,通过 AJAX 方式实现无刷新上传。用户选择图片后,该插件会自动将图片数据发送到服务器,并在页面上即时显示上传状态和结果。开发时,可以...