使用Struts2实现图片上传到服务器指定的文件夹中
2013-05-19 20:01
1006 查看
首先要导入stuts2的所有jar包以及文件上传的jar包
在jsp页面中主要代码:
<body>
<form action="fileUp" method="post" enctype="multipart/form-data">
本地浏览:<input type="file" name="file" /><br/>
<input type="submit" value="提交"/>
</form>
</body>
上传到相应的Action中的代码
public class FileAction extends ActionSupport{
private String des;//待上传的文件将要保存到哪里去
private String filePath;//待上传的文件将要保存到des文件夹下的那个文件中去(使用依赖注入的一个字符串)
private File file;//待上传的文件对象
//下面需要注意的是这个属性命名格式 必须是文件对象的文件名+ContentType,文件对象文件名+FileName。只有这样才能在上传图片的同时将图片的文件名加后缀,文件类型赋值上去
private String fileContentType; // 上传文件类型
private String fileFileName; // 上传文件的真实名字
//省阅get/set方法
public String fileUp()
{
des=ServletActionContext.getServletContext().getRealPath(this.filePath)+"\\"+this.fileFileName;//将要保存到服务器的文件路径
try {
moveTo(des, this.file.getPath());
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
public void moveTo(String des,String from) throws IOException
{
/**
* BufferedInputStream对象为FileInputStream(from)对象添加一些功能,(其实BufferedInputStream对象装饰了InputStream对象)
* BufferedInputStream对象的创建会创建一个内部缓冲区数组,会将FileInputStream(from)从磁盘读取的指定数据填充到该缓冲区
* BufferedOutputStream同理
*/
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(from));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(des));
byte[] b=new byte[1024*4];//每次从FileInputStream读取文件的字节数
int length=0;
while((length=bis.read(b))!=-1)
{
//将读取到的数据写入到指定的文件路径中
bos.write(b);
}
/**
* 读完后,需要关闭输入,输出流
*
*/
if(null!=bis)
{
bis.close();//本方法的调用是关闭FileInputStream(from)的输入流
}
if(null!=bos)
{
bos.close();//本方法的调用是关闭FileOutStream(des)的输入流
}
}
在看下struts.xml里面有关上传的那个Action的配置
<action name="fileUp" class="com.action.FileAction" method="fileUp">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg //允许上传的图片格式,不在列表之内的都不能上传
</param>
</interceptor-ref>
<param name="filePath">\\uploadPic</param> //采用依赖注入,将节点的值就是服务器里面要保存图片的那个文件夹(需要注意这个文件夹必须在服务器的要存在)
<result name="success">showUpload.jsp</result>
</action>
在web.xml里面的配置
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
实现的关键代码就这些。希望能够帮到大家。谢谢!
在jsp页面中主要代码:
<body>
<form action="fileUp" method="post" enctype="multipart/form-data">
本地浏览:<input type="file" name="file" /><br/>
<input type="submit" value="提交"/>
</form>
</body>
上传到相应的Action中的代码
public class FileAction extends ActionSupport{
private String des;//待上传的文件将要保存到哪里去
private String filePath;//待上传的文件将要保存到des文件夹下的那个文件中去(使用依赖注入的一个字符串)
private File file;//待上传的文件对象
//下面需要注意的是这个属性命名格式 必须是文件对象的文件名+ContentType,文件对象文件名+FileName。只有这样才能在上传图片的同时将图片的文件名加后缀,文件类型赋值上去
private String fileContentType; // 上传文件类型
private String fileFileName; // 上传文件的真实名字
//省阅get/set方法
public String fileUp()
{
des=ServletActionContext.getServletContext().getRealPath(this.filePath)+"\\"+this.fileFileName;//将要保存到服务器的文件路径
try {
moveTo(des, this.file.getPath());
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
public void moveTo(String des,String from) throws IOException
{
/**
* BufferedInputStream对象为FileInputStream(from)对象添加一些功能,(其实BufferedInputStream对象装饰了InputStream对象)
* BufferedInputStream对象的创建会创建一个内部缓冲区数组,会将FileInputStream(from)从磁盘读取的指定数据填充到该缓冲区
* BufferedOutputStream同理
*/
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(from));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(des));
byte[] b=new byte[1024*4];//每次从FileInputStream读取文件的字节数
int length=0;
while((length=bis.read(b))!=-1)
{
//将读取到的数据写入到指定的文件路径中
bos.write(b);
}
/**
* 读完后,需要关闭输入,输出流
*
*/
if(null!=bis)
{
bis.close();//本方法的调用是关闭FileInputStream(from)的输入流
}
if(null!=bos)
{
bos.close();//本方法的调用是关闭FileOutStream(des)的输入流
}
}
在看下struts.xml里面有关上传的那个Action的配置
<action name="fileUp" class="com.action.FileAction" method="fileUp">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg //允许上传的图片格式,不在列表之内的都不能上传
</param>
</interceptor-ref>
<param name="filePath">\\uploadPic</param> //采用依赖注入,将节点的值就是服务器里面要保存图片的那个文件夹(需要注意这个文件夹必须在服务器的要存在)
<result name="success">showUpload.jsp</result>
</action>
在web.xml里面的配置
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
实现的关键代码就这些。希望能够帮到大家。谢谢!
相关文章推荐
- 使用图片服务器FastDFS实现图片上传
- iOS使用http post多图片上传带描述+java后台服务器,简单实现例子.
- 将byte[]的图片数据上传至服务器,并存放在服务器指定文件夹
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
- “上传图片到服务器”之SWFUpload与imgAreaSelect的使用----实现切图效果
- 在easyui的框架中,使用ajax实现批量上传图片到服务器
- summernote图片上传功能保存到服务器指定文件夹+php代码+java方法
- 使用阿里云服务器(OOS)实现图片上传
- 使用jersey实现图片上传到另外一台服务器
- Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹——Jason niu
- 前台使用ajax上传图片,后台 node.js 使用 formidable 进行图片接受并存于服务器静态文件夹中
- Java实现上传文件图片到指定服务器目录
- 使用struts2实现上传下载功能(附代码)。类似于ftp服务器。不止局限于本机的上传下载,其他机器也可使用此功能,服务器似的功能
- 使用struts2实现上传下载功能(附代码)。类似于ftp服务器。不止局限于本机的上传下载,其他机器也可使用此功能,服务器似的功能
- summernote图片上传功能保存到服务器指定文件夹+php代码+java方法
- 使用KindEditor的图片上传功能,实现图片上传到专门的图片服务器。
- struts2 图片上传至服务器 页面预览及页面及时图片预览功能实现方式
- 在MVC3中修改KindEditor实现上传图片到指定文件夹
- 微信公众号开发《四》使用微信JS-SDK实现手机图片上传,支持压缩、预览。并下载图片到自身服务器
- php使用curl 实现GET和POST请求(抓取网页,上传文件),支持跨项目和跨服务器