FileUploadAction.java
package com.tya.base.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
public class FileUploadAction extends BaseAction {
private static final long serialVersionUID = 572146812454l;
private static final int BUFFER_SIZE = 16 * 1024;
@Override
public String execute() {
try {
processRequest(getRequest(),getResponse());
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//Struts2 请求 包装过滤器
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
// 获得上传的文件名
//String fileName = wrapper.getFileNames("imgFile")[0];
String fileName = wrapper.getParameter("Filename");
//获得未见过滤器
File file = wrapper.getFiles("Filedata")[0];
//----------- 重新构建上传文件名----------------------
final Lock lock = new ReentrantLock();
String newName = null;
lock.lock();
try {
//加锁为防止文件名重复
newName = System.currentTimeMillis()
+ fileName.substring(fileName.lastIndexOf("."),
fileName.length());
}finally {
lock.unlock();
}
//------------ 锁结束 -------------
//获取文件输出流
FileOutputStream fos = new FileOutputStream(request.getSession()
.getServletContext().getRealPath("/")
+ "image\\" + newName);
//图片文件地址
String newFileName = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ request.getContextPath() + "/image/" + newName;
byte[] buffer = new byte[BUFFER_SIZE];
//获取内存中当前文件输入流
InputStream in = new FileInputStream(file);
try {
int num = 0;
while ((num = in.read(buffer)) > 0) {
fos.write(buffer, 0, num);
}
out.println(newFileName);
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
in.close();
fos.close();
out.flush();
out.close();
}
}
}
分享到:
相关推荐
解决Struts2上传时候使用UTF-8的冲突问题: * 重新包装了JakartaMultiPartRequest提供Chartset的设置方法。 * 可以通过配置方式对MultiPartRequest中的内容进行编码设定,请在Struts.xml中配置添加struts.multipart...
struts2上传文件进度条显示,里面有详细的代码
Uploadify结合Struts2上传demo
struts2上传下载项目,代码详细,注释清晰,简单易懂
struts2上传图片到Oracle,并进行显示,测试可以成功上传
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload
Struts2上传图片并生成等比例缩略图的实例,在上传文件的同时生成等比例的缩略图,分放在不同的文件夹下。自己亲测,没有问题。
struts2上传和下载文件详细源码,适合初学者,转载
struts2上传单个文件及多个文件,strus2拦截器的使用,里面有个user用户,先执行user.jsp即登陆,可以执行上传文件的操作,反之,不能,有个exit.jsp,退出之后不能执行。里面含有jar文件,导入myeclipse可以执行...
Jquery+struts2上传图片,制作进度条等示例,还有Jquery+Json+Struts实现Ajax技术,还有图形处理技术等,虽然很少,但都有重点突出,由于我也是学习,所以代码不是很简洁,对想学习交流的朋友非常合适
这个bug是由Struts2上传文件后return SUCCESS后报的错误: java.lang.AbstractMethodError: be.telio.mediastore.ui.upload.GarryMultiPartRequest.cleanUp()V at org.apache.struts2.dispatcher.multipart....
有关struts2上传 有关struts2上传有关struts2上传
struts上传视频与照片可以再后页面显示。支持同时上传。
Struts2上传文件(直接用request)
struts2上传下载实例包含了很多种不同的方法
struts2 struts2上传 struts2上传文件 struts2上传实例 struts上传,随手写的一个Demo,测试可以通过.
ckeditor和struts2实现图片上传和编辑器上浏览!
使用struts2框架的一个文件上传demo。。大家互相学习学习,里面有注释了,觉得好的顶一下吧。
使用struts2 上传图片到项目webapps目录下 然后生成缩略图 返回到页面显示缩略图
struts2上传下载struts2上传下载