关于后台处理上传图片和显示图片的简单介绍(亲测)
2014-06-29 10:00
447 查看
1.首先有一个包装类
2.这个包装类用于保存图片和自动解析图片的文件名(将这个文件作为action的全局变量就好了,或者写在baseAction中)
前台上传图片的name是这个类的一个属性 name = 后台变量名.image
下面是前台的举例(extjs)
java前台更简单哟,直接加上一个file将name命名为 name = 后台变量名.image 就好了
3.后台承接到对象就直接可以存储了,下面是获取存储位置的文件路径的方法
4.不过本人喜欢写一个上传的工具类,用这个类处理每一次上传,然后上传的路径用spring直接注入进来就好了呀.....
小注:获取图片实际路径的方法有很多,自己可以去网上进行搜索,比如:ServletContextAware(Action内部即可直接使用ServletContext对象)
还有需要注意:
Struts2配置文件中的struts.multipart.saveDir起什么作用?
原来初步感觉这个文件夹就服务端保存上传文件的文件夹,不过根本不是这么回事!
这个文件夹只是用来保存上传文件的“临时路径”,文件上传完毕后就会从此路径移除。
如果不配置将使用默认的 javax.servlet.context.tempdir 来保存临时文件。
所以这个目录设不设无所谓,尼玛又误导我一次!!!
package com.marvin.book.pojo; import java.io.File; public class BookFile { private File image; private String imageFileName; private String imageContentType; public File getImage() { return image; } public void setImage(File image) { this.image = image; } public String getImageFileName() { return imageFileName; } public void setImageFileName(String imageFileName) { this.imageFileName = imageFileName; } public String getImageContentType() { return imageContentType; } public void setImageContentType(String imageContentType) { this.imageContentType = imageContentType; } }
2.这个包装类用于保存图片和自动解析图片的文件名(将这个文件作为action的全局变量就好了,或者写在baseAction中)
前台上传图片的name是这个类的一个属性 name = 后台变量名.image
下面是前台的举例(extjs)
items:[{ xtype:'filefield', name:'photos.image', labelWidth:60, msgTarget: 'side', anchor: '100%', buttonText: '选择照片', fieldLabel : '上传图片' }
java前台更简单哟,直接加上一个file将name命名为 name = 后台变量名.image 就好了
3.后台承接到对象就直接可以存储了,下面是获取存储位置的文件路径的方法
servletContext.getRealPath("upload"); String savePath = realPath + "/" + uploadFileName
4.不过本人喜欢写一个上传的工具类,用这个类处理每一次上传,然后上传的路径用spring直接注入进来就好了呀.....
package com.marvin.book.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.UUID; import org.apache.struts2.ServletActionContext; import org.junit.Test; import com.marvin.book.pojo.BookFile; public class FileUploadUtil { private String filePath = null; public void setFilePath(String filePath) { this.filePath = filePath; } //一个方法一个功能 public String getExt(String fileName){ return fileName.substring(fileName.lastIndexOf(".")+1); } public String createFileName(String fileName){ return UUID.randomUUID().toString()+"."+getExt(fileName); } //删除文件 public void delete(String fileName){ new File(fileName).delete(); } //进行另一个文件位置的存储 public String uploadFile(File file, String fileName, String path){ if(path != null){ filePath = path; } return this.uploadFile(file, fileName); } public String[] bankImage(String path){ File file = new File(path); return file.list(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith("gif"); } }); } //上传文件返回新的文件名 public String uploadFile(File file, String fileName){ //生成新的文件名 String newName = createFileName(fileName); //文件上传 InputStream input = null; OutputStream output = null; try { input = new FileInputStream(file); output = new FileOutputStream(filePath + "/"+newName); byte[] b =new byte[1024]; int length = 0; while((length=input.read(b)) != -1){ output.write(b, 0, length); } } catch (Exception e) { throw new RuntimeException(e); }finally{ try { input.close(); } catch (Exception e) { throw new RuntimeException(e); } finally{ try { output.close(); } catch (IOException e) { throw new RuntimeException(e); } } } return newName; } }
小注:获取图片实际路径的方法有很多,自己可以去网上进行搜索,比如:ServletContextAware(Action内部即可直接使用ServletContext对象)
还有需要注意:
Struts2配置文件中的struts.multipart.saveDir起什么作用?
原来初步感觉这个文件夹就服务端保存上传文件的文件夹,不过根本不是这么回事!
这个文件夹只是用来保存上传文件的“临时路径”,文件上传完毕后就会从此路径移除。
如果不配置将使用默认的 javax.servlet.context.tempdir 来保存临时文件。
所以这个目录设不设无所谓,尼玛又误导我一次!!!
相关文章推荐
- dede验证码不显示,dede图集后台上传图片报错 提示红色FILEID错误的处理办法
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 关于Java后台处理android上传图片的问题
- Android上传图片到服务器并显示(后台用Java处理)
- 关于phpcms上传图片成功,后台图片无法显示的问题
- 处理用户上传图片大小不一,前台显示的问题
- 关于asp.net网站上传图片功能失败的处理
- struts2中使用Blob类型处理图片上传保存在数据库中并在JSP页面中显示图片
- 上传图片+浏览+裁切 Demo(无后台处理部分)
- 关于文件上传的后台处理
- KindEditor的使用和上传图片的后台处理
- 关于IImage的图片显示(闪屏的处理)
- 关于用ADO STREAM做的无组件上传程序简单介绍
- android中关于图片的处理和显示
- 关于上传图片的基本的的思路介绍
- 关于项目中的图片上传、并显示问题
- [转]最简单的图片上传显示代码
- 关于CSDN登录时,图片检验码无法显示的问题处理
- 关于nicEdit上传图片不能用的一些处理
- asp.net mvc 2.0 简单的上传图片到数据库和显示图片