Structs2或者SSH处理图片上传
2016-01-29 11:08
344 查看
1.在Action中创建变量,用于接收页面提交的图片信息
//上传文件集合
private File file0;
//上传文件集合
private String picUserID; //当前上传头像的用户的ID
//上传文件名集合
private String file0FileName;
//上传文件内容类型集合
private String file0FileContentType;
public String getPicUserID() {
return picUserID;
}
public void setPicUserID(String picUserID) {
this.picUserID = picUserID;
}
public File getFile0() {
return file0;
}
public void setFile0(File file0) {
this.file0 = file0;
}
public String getFile0FileName() {
return file0FileName;
}
public void setFile0FileName(String file0FileName) {
this.file0FileName = file0FileName;
}
public String getFile0FileContentType() {
return file0FileContentType;
}
public void setFile0FileContentType(String file0FileContentType) {
this.file0FileContentType = file0FileContentType;
}
2.编辑action方法,处理图片上传的业务逻辑
/**
* 处理用户上传的头像
* @return
* @throws Exception
*/
public String addEmployeePic() throws Exception {
System.out.println("当前用户ID为:" + picUserID);
Map<String,Object> map = new HashMap<String,Object>();
try {
InputStream in = new FileInputStream(file0);
String dir = ServletActionContext.getRequest().getRealPath("/images/upload/head");
File fileLocation = new File(dir);
System.out.println("文件夹路径为:" + dir);
//此处也可以在应用根目录手动建立目标上传目录
if(!fileLocation.exists()){
boolean isCreated = fileLocation.mkdir();
if(!isCreated) {
//目标上传目录创建失败,可做其他处理,例如抛出自定义异常等,一般应该不会出现这种情况。
System.out.println("创建文件夹失败");
}
}
String fileName = this.getFile0FileName();
// 改变文件名称保证唯一名称
String saveFileName = makeFileName(fileName);
File uploadFile = new File(dir, saveFileName);
OutputStream out = new FileOutputStream(uploadFile);
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
System.out.println("文件读写成功");
boolean result = userKissflyService.savePhotoImg("/sshexec/images/upload/head/"+saveFileName,Long.parseLong(picUserID));
System.out.println("图片路径保存成功");
map.put("result",result);
} catch (FileNotFoundException ex) {
System.out.println("上传失败!");
map.put("result",false);
ex.printStackTrace();
} catch (IOException ex) {
System.out.println("上传失败!");
map.put("result",false);
ex.printStackTrace();
}
System.out.println("返回结果map为:" + map.toString());
this.setResult(map);
return "addSUCCESS";
}
/**
* 调整文件名,使之无重复
* @param filename
* @return
*/
public String makeFileName(String filename)
{
return UUID.randomUUID().toString() + "_" + filename;
}
//上传文件集合
private File file0;
//上传文件集合
private String picUserID; //当前上传头像的用户的ID
//上传文件名集合
private String file0FileName;
//上传文件内容类型集合
private String file0FileContentType;
public String getPicUserID() {
return picUserID;
}
public void setPicUserID(String picUserID) {
this.picUserID = picUserID;
}
public File getFile0() {
return file0;
}
public void setFile0(File file0) {
this.file0 = file0;
}
public String getFile0FileName() {
return file0FileName;
}
public void setFile0FileName(String file0FileName) {
this.file0FileName = file0FileName;
}
public String getFile0FileContentType() {
return file0FileContentType;
}
public void setFile0FileContentType(String file0FileContentType) {
this.file0FileContentType = file0FileContentType;
}
2.编辑action方法,处理图片上传的业务逻辑
/**
* 处理用户上传的头像
* @return
* @throws Exception
*/
public String addEmployeePic() throws Exception {
System.out.println("当前用户ID为:" + picUserID);
Map<String,Object> map = new HashMap<String,Object>();
try {
InputStream in = new FileInputStream(file0);
String dir = ServletActionContext.getRequest().getRealPath("/images/upload/head");
File fileLocation = new File(dir);
System.out.println("文件夹路径为:" + dir);
//此处也可以在应用根目录手动建立目标上传目录
if(!fileLocation.exists()){
boolean isCreated = fileLocation.mkdir();
if(!isCreated) {
//目标上传目录创建失败,可做其他处理,例如抛出自定义异常等,一般应该不会出现这种情况。
System.out.println("创建文件夹失败");
}
}
String fileName = this.getFile0FileName();
// 改变文件名称保证唯一名称
String saveFileName = makeFileName(fileName);
File uploadFile = new File(dir, saveFileName);
OutputStream out = new FileOutputStream(uploadFile);
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
System.out.println("文件读写成功");
boolean result = userKissflyService.savePhotoImg("/sshexec/images/upload/head/"+saveFileName,Long.parseLong(picUserID));
System.out.println("图片路径保存成功");
map.put("result",result);
} catch (FileNotFoundException ex) {
System.out.println("上传失败!");
map.put("result",false);
ex.printStackTrace();
} catch (IOException ex) {
System.out.println("上传失败!");
map.put("result",false);
ex.printStackTrace();
}
System.out.println("返回结果map为:" + map.toString());
this.setResult(map);
return "addSUCCESS";
}
/**
* 调整文件名,使之无重复
* @param filename
* @return
*/
public String makeFileName(String filename)
{
return UUID.randomUUID().toString() + "_" + filename;
}
相关文章推荐
- Linux Generating SSH Keys
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- upload上传单张图片
- 图片引发的溢出危机(图)
- C#实现把彩色图片灰度化代码分享
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- 随鼠标移动的图片或文字特效代码
- CSS 图片横向排列实现代码
- C#实现将Email地址转成图片显示的方法
- 超级经典一套鼠标控制左右滚动图片带自动翻滚
- 用css实现图片垂直居中的使用技巧
- C++实现读取图片长度和宽度
- PHP根据图片色界在不同位置加水印的方法
- php通过修改header强制图片下载的方法
- PHP安全上传图片的方法