et-mvc上传文件是对Commons-fileupload组件的封装,所以使用时需要引入commons-fileupload.jar, commons-io.jar, commons-logging.jar三个包。
上传文件的第一步就是象下面一样创建一个multipart/form-data表单:
<form action="/upload/doUpload" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>然后编写控制器,定义上传的Action方法:
public class UploadController extends ApplicationController{
public String doUpload(MultipartFile file) throws Exception{
file.transferTo(new File("e:/temp/" + file.getOriginalFilename()));
return file.getOriginalFilename()+":"+file.getSize();
}
}
上传的方法,封装好了,可以获取表单里正常传入的值。
上传时候,用原始的方法却上传不成功(代码如下):
boolean isFileUpload = ServletFileUpload.isMultipartContent(request);//检测是否存在文件上传的请求
if(isFileUpload){
// 处理磁盘文件工厂类
FileItemFactory factory = new DiskFileItemFactory();
// 文件上传的处理类
ServletFileUpload upload = new ServletFileUpload(factory);
//解析上传的文件
List fileItems = upload.parseRequest(request);
for (Iterator iterator = fileItems.iterator(); iterator.hasNext();){
FileItem fileItem= (FileItem) iterator.next();
if(!fileItem.isFormField()){
}else{
String contentType = fileItem.getContentType().toLowerCase();// 比如:image/pjpg
//进行格式的判断
if (contentType.indexOf("excel") != -1) {
//对文件上传的处理
String fileUploadPath=fileItem.getName();
// 上传之后文件的名字要唯一:采用当前上传的系统时间的毫秒数作为文件的名字
String time = System.currentTimeMillis() + "";// 当前系统时间
String postfix = fileUploadPath.substring(fileUploadPath.lastIndexOf("."));//获取文件的后缀名
String fileName = time+postfix;
String contextPath =this.getServletContext().getRealPath("upload");//获取工程中的名为upload的目录
System.out.println(contextPath);
filePath = contextPath+File.separator+fileName;
file = new File(filePath);//代表上传文件的目录
System.out.println("上传成功!");
FileOutputStream output = new FileOutputStream(file);
InputStream in = fileItem.getInputStream();
IOUtils.copy(in,output);
IOUtils.closeQuietly(output);//关闭输出流
IOUtils.closeQuietly(in);//关闭输出流
b = true;
continue;
}else {
System.out.println("文件格式错误");
continue;
}
}
}
}
这种方法,总是在List fileItems = upload.parseRequest(request);这里获取不到值,还没确定原因,有待于进一步研究。
需要下载文件时,可以使用BinaryView,如下所示:
public BinaryView download() throws Exception{
BinaryView view = BinaryView.loadFromFile("e:/temp/arrow.gif");
view.setContentType("image/gif");
//view.setContentDisposition("attachment"); //下载
return view;
}
看起来应该是比较简单的。
分享到:
相关推荐
aliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-upload-sdk-1.5.0.zipaliyun-...
commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-upload.jar资源包commons-...
ajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_uploadajax_upload
upload,upload,upload,uploadupload,upload
Nginx upload modules
jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 upload jquery上传插件upload jquery 上传 插件 ...
包含upload-module的nginx-1.21.6,针对windows平台64位的编译的二进制(exe)文件。 为了upload-module能在window平台编译通过,进行部分代码修改,修改内容详见https://github.com/chnykn/bimface
upload-dragger.vue
upload_5xsoft.inc 接收方法案例 <!-- #include FILE="upload_5xsoft.inc"--> set upload=new upload_5xsoft set file=upload.file("file") if file.fileSize>0 then file.saveAs Server.mappath...
赠送jar包:jodd-upload-3.7.1.jar; 赠送原API文档:jodd-upload-3.7.1-javadoc.jar; 赠送源代码:jodd-upload-3.7.1-sources.jar; 赠送Maven依赖信息文件:jodd-upload-3.7.1.pom; 包含翻译后的API文档:jodd-...
前端upload插件uploadify前端upload插件uploadify前端upload插件uploadify
信息系统中upload文件上传移动转换
赠送jar包:jodd-upload-3.7.1.jar; 赠送原API文档:jodd-upload-3.7.1-javadoc.jar; 赠送源代码:jodd-upload-3.7.1-sources.jar; 赠送Maven依赖信息文件:jodd-upload-3.7.1.pom; 包含翻译后的API文档:jodd-...
一、思路,从后台获取七牛token,上传图片到七牛,获取返回图片路径放入el-upload。 二、代码。 <el v-model=listVideoQuery.orgLogo change=orgLogoChange></el> <el-upload class=upload-demo :file-list=...
upload的扩展插件,直接用,很方便,如果需要这一插件的可以看一下。
<file-upload :isRed="判断是否是必须的" @upload="上传成功的函数" :inImgList="要渲染的图片列表" :inFiles="要渲染图片id列表" :filesList="图片列表" src="默认上传图片" :...
解决thinkphp3.2出现Class 'Think\Upload' not found的问题,下载后直接扔到ThinkPHP\Library\Think下面直接解压出来然后刷新你的程序就能解决
开源项目-olahol-go-imageupload#go-imageupload.zip,go-imageupload: Gracefully handle image uploading and thumbnail creation.
aliyun-java-vod-upload-1.4.14