一个带展示的jsp上传控件模型
带展示上传控件的基本模型,无样式
jsp部分:
<td>
<form id="form1" enctype="multipart/form-data" method="post">
<input type="file" name="filePic" id="doc" style="width:300px;" onChange="javascript:setImagePreviews();" accept="image/*" />
</form>
<input type="button" value="上传" onclick="uploadPic();" style="margin-right: 3px;margin-top: 4px;float:right;line-height: 16px;" />
</td>
<td width="100px" height="100px" >
<div id="dd" style=" width:100px;"></div>
</td>
<script type="text/javascript">
//下面用于多图片上传预览功能
function setImagePreviews(avalue) {
var docObj = document.getElementById("doc");
var dd = document.getElementById("dd");
dd.innerHTML = "";
var fileList = docObj.files;
for (var i = 0; i < fileList.length; i++) {
dd.innerHTML += "<div style='float:left' ><img id='img" + i + "' /> </div>";
var imgObjPreview = document.getElementById("img"+i);
if (docObj.files && docObj.files[i]) {
//火狐下,直接设img属性
imgObjPreview.style.display = 'block';
imgObjPreview.style.width = '100px';
imgObjPreview.style.height = '100px';
//imgObjPreview.src = docObj.files[0].getAsDataURL();
//火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]);
}
else {
//IE下,使用滤镜
docObj.select();
var imgSrc = document.selection.createRange().text;
alert(imgSrc)
var localImagId = document.getElementById("img" + i);
//必须设置初始大小
localImagId.style.width = "100px";
localImagId.style.height = "100px";
//图片异常的捕捉,防止用户修改后缀来伪造图片
try {
localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
}
catch (e) {
alert("您上传的图片格式不正确,请重新选择!");
return false;
}
imgObjPreview.style.display = 'none';
document.selection.empty();
}
}
return true;
} function uploadPic(){
var formData = new FormData();
formData.append("filePic",$("#doc")[0].files[0]);
$.ajax({
url : 'farmfind/uploadfarmfindPics?kind=thumbnail',
type : 'POST',
data : formData,
// 告诉jQuery不要去处理发送的数据
processData : false,
// 告诉jQuery不要去设置Content-Type请求头
contentType : false,
beforeSend:function(){
console.log("正在进行,请稍候");
},
success : function(responseStr) {
if(responseStr.status===0){
console.log("成功"+responseStr);
}else{
console.log("失败");
}
},
error : function(responseStr) {
console.log("error");
}
}); }
</script>
controller层:
//图片上传
@RequestMapping(value="/uploadfarmfindPics") // 处理上传的缩略图
@ResponseBody
public Map uploadfarmfindPics(@RequestParam(value = "filePic", required=false) MultipartFile[] mfs ,
@RequestParam(value = "kind", required=false) String kind) throws Exception{
// 从CommonConfig里面去取, 默认这个路劲不能错
String PicturePath= CommonConfig.PicturePath.endsWith("/") ? CommonConfig.PicturePath : (CommonConfig.PicturePath +"/");
System.out.println("i get the kind="+kind);
System.out.println("i get the PicturePath===="+PicturePath);
Map<String,Object> map = new HashMap<String,Object>();
String uuid=null;
for(MultipartFile mf : mfs){
//文件非空才能上传 否者会报异常
if(!mf.isEmpty()){
uuid=farmfindService.saveUploadThumbnailFile(mf,PicturePath); //调用上传方法,上传方法
System.out.println("controller层的上传文件的文件名:" + mf.getName());
System.out.println("controller层的上传文件的原始文件名:" + mf.getOriginalFilename());
}
}
String errInfo=null;
if(null == uuid){
errInfo= "fail";
}else{
errInfo = "success";
}
map.put("result", errInfo);
map.put("uuid", uuid);
map.put("PicturePath",PicturePath);
return map;
}
service层:
public String get32UUID(){
return UuidUtil.get32UUID();
} public void showMF(MultipartFile mf) {
System.out.println("内容类型是:" + mf.getContentType());
System.out.println("上传文件的文件名:" + mf.getName());
System.out.println("上传文件的原始文件名:" + mf.getOriginalFilename());
System.out.println("上传文件的大小:" + mf.getSize());
System.out.println("上传文件是空的吗:" + mf.isEmpty());
} public String saveUploadThumbnailFile(MultipartFile mf, String PicturePath){
showMF(mf);
System.out.println("----------");
String defaultUploadPath=PicturePath;
String uuid=this.get32UUID();
String filePath=defaultUploadPath+uuid;
String arr[]=(mf.getOriginalFilename()).split("\\.");
String type=arr[arr.length-1];
uuid+="."+type;
filePath+="."+type;
System.out.println("filePath=="+filePath);
try {
System.out.println("go into try");
mf.transferTo(new File(filePath)); //执行上传方法
} catch ( IOException e) {
e.printStackTrace();
}catch(IllegalStateException ee){
ee.printStackTrace();
}
return uuid;
}
一个带展示的jsp上传控件模型的更多相关文章
- 基于AngularJs的上传控件-angular-file-upload
今天跟大家分享的是一个依赖于angular的上传控件. 前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用 ...
- 因用了NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误的解决方法
今天遇到一个问题,就是“NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误”,百度后发现了一个解决方法,跟大家分享下: NeatUploa ...
- 前端上传控件plupload总结
plupload是一个单图和多图上传控件: 属性和方法介绍,参考以下博客: https://www.cnblogs.com/2050/p/3913184.html 这里直接贴出JS代码,细到爆的注释, ...
- 淘宝(阿里百川)手机客户端开发日记第十四篇 jsp提交含有上传控件表单乱码问题
今天我来总结昨天开发的一个简单的jsp web 应用程序时,在做一个调教表单,从servlet端获取数据,这个表单里含有上传文件控件.如果我们在测试的时候,获取数据的是乱码,这时,大家可以先去掉上传控 ...
- [Vue]写一个简单的文件上传控件
这篇将介绍如何写一个简单的基于Vue+Element的文件上传控件. 控件将具有 1. 上传队列的列表,显示文件名称,大小等信息,可以显示上传进度实时刷新 2. 取消上传 使用Element的u ...
- 百度 flash html5自切换 多文件异步上传控件webuploader基本用法
双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...
- jquery文件上传控件 Uploadify
(转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...
- Extjs3 + swfUpload实现多文件上传控件
要在ExrtJS框架实现选择多文件上传,FileUploadField已经无法满足需求,所以采用了 swfUpload上传控件,上传窗口如下: 多选文件进行上传(其实是每个文件异步上传),可以中途停止 ...
- js上传控件 plupload 使用记录
最近一个项目需要使用一个上传控件进行多图片上传,给用户更好的体验,找到了plupload,用了一下感觉还是不错的, 1.从官网上 可以获得例子 ,我集成到了jsp,如下: <%@ page l ...
随机推荐
- Linux命令:nl
全称:number lines of files 用途:显示的时候添加行号. 格式:nl [OPTION]... [FILE]... 类型:nl is /usr/bin/nl 说明: 该命令主要就是针 ...
- ubuntu配置Python-Django Nginx+uwsgi 安装配置
安装Nginx sudo apt-get install nginx ubantu安装完Nginx后,文件结构大致为: 所有的配置文件都在 /etc/nginx下: 启动程序文件在 /usr/sbin ...
- 【我的Android进阶之旅】 RxJava 理解Backpressure并解决异常 rx.exceptions.MissingBackpressureException
今天测试人员在测试应用APP的时候应用crash了,查看了下crash log如下所示: java.lang.IllegalStateException: Exception thrown on Sc ...
- django迁移:全局、局部
django迁移:全局.局部 django 数据库迁移(migrate)应该知道的一些事 https://blog.csdn.net/stonesola/article/details/6975861 ...
- yum源的报错排除
echo "http://vault.centos.org/6.5/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist ...
- 013-HQL中级3-Hive四种数据导入方式介绍
Hive的几种常见的数据导入方式这里介绍四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3).从别的表中查询出相应的数据并导入到Hive表中:(4).在 ...
- Spark SQL中UDF和UDAF
转载自:https://blog.csdn.net/u012297062/article/details/52227909 UDF: User Defined Function,用户自定义的函数,函数 ...
- Spark2.0机器学习系列之6:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析
概念梳理 GBDT的别称 GBDT(Gradient Boost Decision Tree),梯度提升决策树. GBDT这个算法还有一些其他的名字,比如说MART(Multiple Addi ...
- POJ1185:炮兵阵地(状压dp)
题目:http://poj.org/problem?id=1185 大神的题解: 方法就是用DP[i][r][p]表示第i行状态为r,第i-1行状态是p时的最多个数.而这里p受到r的限制,而第i-2行 ...
- Selenium-Grid2 配置RemoteWebDriver
为什么要使用Selenium Grid ? 分布式运行大规模的Test 能够通过一个中央点,很容易的运行不同OS上的不同browser 最小化对Grid的维护时间,并能充分利用虚拟设备 Seleniu ...