struts2文件上传
最近项目需要实现一个功能,既可以用文本编辑器向数据库中添加数据,也可以直接上传文件插入数据。
文本编辑器很简单,而文件上传的话,需要用struts2的一些功能,把上传的文件放入指定目录下,向数据库插入的是一个uri。查看数据的时候则要分两种情况,数据库中是uri的还是不是的,当时uri需要用poi来读取数据,否则直接显示就行。
具体代码如下:
public class zcfgkAction {
private int id;
private String name;
private String content;
private String fileFileName;
private File file;
private String filePath="D:/projects/demo/web/upload";
private String fileContentType;
public String upload(){
try{
InputStream in = new FileInputStream(file);
name=fileFileName.substring(0, fileFileName.lastIndexOf("."));
content=filePath+"/"+fileFileName;
//主要就是使用了这个类
File uploadFile = new File(filePath, fileFileName);
//下边就是读取文本内容
OutputStream out = new FileOutputStream(uploadFile);
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
System.out.println("read完毕");
in.close();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}
//根据id查看数据的时候分两种情况
public String findById(){
zcfgkDao dao=new zcfgkDaoImpl();
zcfgk z=dao.find(id);
name=z.getName();
String c=z.getContent();
if(c.substring(0,2).equals("D:")){
// System.out.println("带有uri的数据");
content=readDoc(c);
}else{
//System.out.println("不带有uri");
content=c;
}
return "success";
}
//poi用来读取word文档的方法,这种方式只能读取word文本,图片什么的不行
//还用uri比较蛋疼,input获取的与read()中的少一个‘\’,不知道怎么转换,自己写的有点2
public String readDoc(String u){
StringBuilder s=new StringBuilder(u);
s.insert(3, "\");
String uri2=s+"";
ReadWord r=new ReadWord();
String content1=r.read(uri2);
return content1;
}
}
下边的是poi需要的jar包,也是从iteye拿的,蛋疼的又传上来了