ajaxFileUpload上传文件带图片预览

背景:上传图片时候需要预览,本来准备用Bootstrap FieInput,但是项目里bootstrap源码被改了,预览效果不能整场展示,于是使用以前用过的ajaxFileUpload来实现效果。如果没有修改bootstrap源码,可以考虑下使用Bootstrap FieInput,功能很多很强大。

一、下载ajaxFileUpload
下载地址:https://github.com/carlcarl/AjaxFileUpload

二、使用
直接上代码
html

<div class="form-group">
	<label  class="col-sm-2 control-label"><span id="picTitle2" style="display:none">公式</span></label>
	<div class="col-sm-10">
		<img class="imgBacgground"  id="pic" src="" style="display: none">
		<input id="quota" name="quota" type="hidden"/><div>
		<!-- 查看预览图 -->
		<div class="dobtn" id="showView" onclick="showView()">上传公式</div>
		<!-- 隐藏的上传控件 通过‘accept’属性限制文件格式 -->
		<input id="uploadfile" name="uploadfile" type="file" accept=".png,.jpg" style="display:none"/>
		<div class="dobtn" onclick="cleanFile()">清空</div>
		<!-- 上传文件 -->
		<div class="dobtn" onclick="uploadFile()"  style="display:none">上传</div>
		</div>
	</div>
</div>

js

	//生成预览图
	function showView(){
		$("#uploadfile").click(); 
		$("#uploadfile").on('change',function(){
			var file = this.files[0];
			var url =getObjectURL(file) ;
			$("#pic").attr("src", url) ; //将图片路径存入src中,显示出图片
			$("#picTitle1").attr("style", "display:none") ; 
			$("#picTitle2").attr("style", "display:display") ; 
			$("#pic").attr("style", "display:diaplsy") ; 
		});
	}
	
	//清空预览图
	function cleanFile(){
		 var obj = document.getElementById('uploadFile') ;  
		 if(obj!=null){
			 obj.outerHTML=obj.outerHTML;  
		 }
		 $("#picTitle2").attr("style", "display:none") ; 
		 $("#picTitle1").attr("style", "display:display") ; 
		 $("#pic").attr("style", "display:none") ; 
		 $("#pic").attr("src", '') ; 
	}
	
	//文件上传
	$.ajaxFileUpload({  
	    url:  ctx + "/examineQuota/uploadImg",
	    secureuri: true,//是否启用安全提交  默认为false
	    fileElementId: "uploadfile", //type="file"的id
	    dataType: 'json', //返回值类型 一般设置为json
	    contentType: "application/x-www-form-urlencoded; charset=utf-8",
	    success: function (data)
	    {
    		//图片上传成功后保存
		alert("保存成功");
	    },
	    error:function(e){
	        alert("网络异常,请稍后重试。");
	    }
	});

java

	@RequestMapping(value = "/uploadImg",method=RequestMethod.POST)
    @ResponseBody
    public void uploadImg(@RequestParam(value = "uploadfile", required = false) MultipartFile multipartFile,
            HttpServletRequest request, HttpServletResponse response)
            throws IOException {
		Map<String,String> map  = new HashMap<>();
		long size = multipartFile.getSize();
		if(!"0".equals(size)){
			//获取项目路径
			String  filePath = ExamineQuotaController.class.getResource("/").getPath();
			filePath = filePath.substring(1, filePath.length()-16);
			//文件保存位置
			filePath += "resources/img/";
			//组装文件名
			String originalFilename = multipartFile.getOriginalFilename();
			int index = originalFilename.lastIndexOf(".");
			//获取文件类型
			String fileType = originalFilename.substring(index, originalFilename.length());
			String newFileName = Tools.getNowTimeOfString() + fileType;
			//将文件保存到指定位置
			String path = filePath+newFileName;  
			File file = new File(path);
			multipartFile.transferTo(file);
			map.put("fileName", newFileName);
		}

ps:使用过程中可能会报 jQuery.handleError is not a function的错,有时候影响使用,有时候不影响使用。解决方法参考下面链接
https://www.cnblogs.com/penciler/p/4305011.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值