关于文件上传
请问该如何实现文件上传,3.1版本只看到这种写法:UploadFile uploadFile = new UploadFile(request, icon);
uploadFile.setCusPath("plug-in/accordion/images");
uploadFile.setExtend("extend");
uploadFile.setTitleField("iconclas");
uploadFile.setRealPath("iconPath");
uploadFile.setObject(icon);
uploadFile.setByteField("iconContent");
uploadFile.setRename(false);
systemService.uploadFile(uploadFile);
问题是icon不是我的pojo,想自己写上传方法得到的request对象又不是common-fileupload需要的,请赐教!
本帖最后由 GIN 于 2013-5-4 21:46 编辑
/**
* 上传文件
*
* @param request
* @return
* @throws Exception
*/
@RequestMapping(params = "saveFiles", method = RequestMethod.POST)
@ResponseBody
public AjaxJson saveFiles(HttpServletRequest request) throws Exception {
// 把压缩包里面的jar拷贝到工程的lib下面即可 主要方法介绍
//新建一个SmartUpload对象
AjaxJson j = new AjaxJson();
String fileName = null;
UploadFile uploadFile = new UploadFile(request);
String ctxPath = request.getSession().getServletContext().getRealPath("");
File file = new File(ctxPath);
if (!file.exists()) {
file.mkdir();// 创建文件根目录
}
MultipartHttpServletRequest multipartRequest = uploadFile.getMultipartRequest();
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile mf = entity.getValue();// 获取上传文件对象
fileName = mf.getOriginalFilename();// 获取文件名
String savePath = file.getPath() + "/" + fileName;// 上传后的文件绝对路径
System.out.println("上传后路径:"+savePath);
File savefile = new File(savePath);
try {
FileCopyUtils.copy(mf.getBytes(), savefile);
} catch (IOException e) {
e.printStackTrace();
}
}
message = "上传成功";
j.setMsg(message);
return j;
} 感谢,问题是如果同时上传2张图片会执行2次这个saveFiles方法,有办法让他只执行一次吗? GIN 发表于 2013-5-4 21:45 static/image/common/back.gif
感谢,问题是如果同时上传2张图片会执行2次这个saveFiles方法,有办法让他只执行一次吗?
sesame 发表于 2013-5-5 12:03 static/image/common/back.gif
感谢,问题是如果同时上传2张图片会执行2次这个saveFiles方法,有办法让他只执行一次吗?
...
把多个文件放在一个表单里 统一提交 见2楼的程序代码 第25行会迭代表单里的文件 就是处理多个文件上传的情况的 GIN 发表于 2013-5-5 12:35 static/image/common/back.gif
见2楼的程序代码 第25行会迭代表单里的文件 就是处理多个文件上传的情况的 ...
现在用jeecg例子就只有一个表单提交,但是是可以选择多个文件的,debug了一下一个文件会激发一次saveFiles方法,如果同时选择了多个会执行多次saveFiles方法。 sesame 发表于 2013-5-5 13:41 static/image/common/back.gif
现在用jeecg例子就只有一个表单提交,但是是可以选择多个文件的,debug了一下一个文件会激发一次saveFile ...
jeecg里上传文件有几种方式 一种是自动上传 选择文件后就会触发提交到控制器还有就是表单提交的方式 最后统一提交 你这样可能是用了自动上传吧 才会选一个文件提交一次? GIN 发表于 2013-5-5 14:12 static/image/common/back.gif
jeecg里上传文件有几种方式 一种是自动上传 选择文件后就会触发提交到控制器还有就是表单提交的方式 最 ...
我用的是这种方式
<div class="form">
<t:upload name="file_upload" uploader="jdController.do?saveImgs" extend="*.png;*.jpg" id="file_upload" formData="shortName,level,detail,sid,pid"></t:upload>
</div>
最后是有上传文件按钮提交,非自动提交。 本帖最后由 GIN 于 2013-5-5 14:56 编辑
jsp代码:
<td class="value" width="30%">
<t:upload queueID="test" multi="true" name="fiels" buttonText="上传文件" dialog="false" callback="openrcon"uploader="systemController.do?saveFiles" extend="office" id="default" formData="documentTitle"></t:upload>
</td>
<td class="value" id="test">
</td>
queueID 是指定该上传 是多个文件队列上传值为显示实时上传的队列的容器id
multi 是允许多文件上传
这样 只需要一个<t:upload> 就可以了
希望可以帮助你