<input type='file'>选择文件后自动上传文件

想要一个选择了文件就自动上传的效果,但之前的<input file> 都是写在form表单中来提交的。借助jquery的ajaxfileupload.js,可以这样子弄:

<p>正面:<input name="file1" type="file" value="选择" size="20" id="fileUpload1" onchange ="uploadFile(this,1)"></p>

function uploadFile(obj, type) {

	$.ajaxFileUpload({
		url : "http://localhost:8081/ws2/servlet/fileUpload",
		secureuri : false,// 一般设置为false
		fileElementId : "fileUpload"+type,// 文件上传表单的id <input type="file" id="fileUpload" name="file" />
		dataType : 'json',// 返回值类型 一般设置为json
		data: {'type': type},
		
		success : function(data) // 服务器成功响应处理函数
		{
                },
		error : function(data)// 服务器响应失败处理函数
		{
			console.log("服务器异常");
		}
	});
	return false;
}
当在打开的框中双击了一个文件后,就会触发onchange事件,把上传的实现代码写中其中即可。

JAVA后台接收(一些路径参数请自行加上):

	
		request.setCharacterEncoding("utf-8");
		
		Map result = new HashMap();
		Part part = null; // servlet3.0的文件上传新办法
		

        
		String     jsonp = request.getParameter("jsonpcallback"), 
			   type = request.getParameter("type");
		
	
		
		try {
			
			if (type != null) {
				part = request.getPart("fileUpload"+type); // 参数为<input type='file' name='参数名' />		
			}else {
				part = request.getPart("fileUpload"); 
			}
			// 获取文件名
			String header = part.getHeader("content-disposition"),
			       fileName = getFileName(header),
			       path = filePath + File.separator + fileName;
			
			File file = new File(filePath); // 建立目录
			if (!file.exists()) {
				file.mkdirs();
			}
			
			//part.write(path); weblogic下用part.write()无法写到指定的路径,它一定会搞到域里面。所以用流来写。从part中获取,不能从request获取
			InputStream is = part.getInputStream();
			FileOutputStream fos = new FileOutputStream(path);
			byte[] b = new byte[1024];
	        int i = 0;
	        while ((i = is.read(b)) > -1) {
	          fos.write(b, 0, i);
	        }
			



评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值