`
KingwarLuo
  • 浏览: 12733 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

plupload 利用ajax方式上传文件

 
阅读更多

需要引入  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>&nbsp;修改附件"><i class="icon-pencil"></i>&nbsp;修改附件</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函数中执行。

 

分享到:
评论

相关推荐

    Plupload 上传.net MVC 上传示例

    在.NET MVC框架中,我们可以利用Plupload来构建用户友好的文件上传功能,提供断点续传、批量上传、进度条显示等特性。本示例将详细介绍如何在.NET MVC项目中集成并使用Plupload。 1. **Plupload组件介绍** ...

    Plupload + jquery.plupload.queue 批量上传 和 plupload.full单个上传

    Plupload 是一个强大的多浏览器文件上传组件,支持各种浏览器环境,包括IE6+、Firefox、Chrome、...总的来说,Plupload结合`jquery.plupload.queue`和C#后端的Ajax处理,可以构建出高效且友好的文件批量上传解决方案。

    基于PHP的Plupload ajax批量上传插件php版.zip

    2. **Ajax上传**:利用Ajax技术,Plupload可以在不刷新页面的情况下实现文件的异步上传,提高用户体验。用户可以随时添加、删除文件,而无需等待整个上传过程完成。 3. **多文件选择**:Plupload允许用户一次性选择...

    plupload+PHP多图片上传

    6. **批量上传优化**:为了提高性能,可以设置plupload以并发的方式上传多个文件,减少用户的等待时间。同时,利用PHP的异步处理或队列系统,可以进一步优化服务器资源的利用。 7. **用户体验**:在前端设计上,...

    ajax上传文件

    在现代Web应用中,"Ajax上传文件"是一个重要的技术,它允许用户在不刷新整个页面的情况下,通过异步方式上传文件。这种方式极大地提升了用户体验,因为它提供了实时反馈,并减少了页面加载时间。下面我们将深入探讨...

    ajax的文件上传

    在Web开发中,用户经常需要上传文件,如图片、文档等。传统的文件上传方式是通过表单提交,页面会跳转或者刷新,这在用户体验上并不理想。Ajax技术的出现改变了这一情况,它使得在不刷新整个页面的情况下,可以实现...

    ajax 文件上传(带进度显示支持大文件)

    Ajax文件上传的基本思想是通过JavaScript创建XMLHttpRequest对象,利用FormData对象将文件数据封装,然后发送POST请求到服务器。服务器处理完文件后,返回响应结果,前端通过Ajax回调处理这些结果,实现无刷新的文件...

    swfupload+ajax实现多文件上传下载删除并将上传文件上传到数据库

    本教程将详细介绍如何利用`swfupload`和Ajax实现多文件上传、下载、删除,并将上传的文件信息存储到数据库。 首先,`swfupload`是一个开源的文件上传组件,它支持多文件选择、预览、进度条显示等功能。由于Flash在...

    ajax版自定义上传文件数量+进度条+JAVA+Servlet

    在现代Web应用中,文件上传是一项常见的功能,而利用AJAX技术实现的异步文件上传不仅可以提高用户体验,还能实现文件上传进度的实时显示。本文将深入讲解如何使用AJAX、JavaScript、Java和Servlet来实现一个自定义的...

    jQuery实现文件编码成base64并通过AJAX上传的方法

    本文实例讲述了jQuery实现文件编码成base64并通过AJAX上传的方法。分享给大家供大家参考,具体如下: 使用AJAX是无法直接上传文件的,一般都是新建个iframe在它里面完成表单提交的过程以达到异步上传文件的效果。 ...

    Ajax+ASP.net多个大文件上传控件附示例

    - **AJAX调用**:前端通过JavaScript发送异步请求,每次上传文件块,服务器端接收并保存。 - **进度反馈**:利用Ajax回调或WebSockets实时更新上传进度,显示在用户界面上。 6. **安全性**:在实现大文件上传时,...

    AjaxUpload.rar 文件上传

    AjaxUpload是一种基于JavaScript和Ajax技术实现的异步文件上传方式,它允许用户在不刷新整个网页的情况下上传文件,显著提升了用户体验。AjaxUpload的核心是利用XMLHttpRequest对象与服务器进行交互,通过创建隐藏的...

    ajax上传图片或文件

    **Ajax上传图片或文件技术详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在现代Web应用中,它被广泛用于实现页面的异步交互,提升用户体验。本篇...

    ajax图片上传插件

    市面上有许多现成的Ajax图片上传插件,如jQuery File Upload、Plupload、Dropzone.js等。这些插件提供了丰富的配置选项和API,简化了开发过程,同时也提供了预览、多文件上传、拖拽上传等功能。 10. **用户体验...

    Anthem.NET中FileUpload控件Ajax方式的文件上传

    在本文中,我们将深入探讨如何在Anthem.NET 1.5框架中利用FileUpload控件实现Ajax方式的文件上传。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下进行部分页面更新,从而提供更好的...

    Ajax-Uploader批量上传控件

    Ajax-Uploader的工作原理是通过JavaScript监听文件输入元素的变化,当用户选择文件后,控件会创建一个或多个XMLHttpRequest对象,利用Ajax技术将文件数据分块发送到服务器。这种方式可以避免一次性加载大量文件导致...

    codeigniter-plupload-chunk-upload:使用plupload在Codeigniter中上传块文件

    防止恶意用户利用此功能进行DoS攻击,可以限制单个文件大小、设置上传速率限制,以及验证上传文件类型等。 总结,CodeIgniter结合Plupload的分块上传方案,通过将大文件拆分成小块,提高了文件上传的稳定性和效率。...

    PHP+jQuery+Ajax多图片上传

    Ajax上传原理 Ajax(Asynchronous JavaScript and XML)技术允许在不刷新整个页面的情况下与服务器进行数据交换,从而实现了页面的异步更新。在多图片上传场景中,Ajax可以实现图片逐个上传,同时更新页面上的预览...

    jsp多文件上传

    6. **Ajax上传**:plupload通常采用异步(Ajax)方式进行文件上传,这意味着文件上传可以在后台进行,而不会阻塞用户界面。这样用户可以继续浏览页面,甚至可以同时执行其他操作,提高了交互的流畅性。 7. **安全性...

    plupload.full.min.rar

    在实际应用中,`plupload.full.min.js` 需要与服务器端的处理脚本配合使用,通过 AJAX 方式实现无刷新上传。用户选择图片后,该插件会自动将图片数据发送到服务器,并在页面上即时显示上传状态和结果。开发时,可以...

Global site tag (gtag.js) - Google Analytics