Java以struts2为例介绍如何实现图片上传

网友投稿 208 2023-07-26


Java以struts2为例介绍如何实现图片上传

总的说图片上传有两种方式,一种是把图片文件写到数据库中,另一种是存到服务器文件目录中。写到数据库中的图片文件需要转换成二进制流的格式,占用数据库空间比较,适合少量图片KzLvLBjTTG的存储,比如说,系统中某些小图标,写到数据库中的优点是比较安全,不容易被用户不小心删除。

在struhttp://ts2中实现(以图片上传为例)

1.FileUpload.jsp代码清单如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

2.ShowUpload.jsp的功能清单如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

"/>


3.FileUploadAction.java的代码清单如下 :

package com.chris;

import java.io.*;

import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{

private static final long serialVersionUID = 572146812454l ;

private static final int BUFFER_SIZE = 16 * 1024 ;

//注意,文件上传时同时与myFile,myFileContentType,myFileFileName绑定

//所以同时要提供myFileContentType,myFileFileName的set方法

private File myFile; //上传文件

private String contentType;//上传文件类型

private String fileName; //上传文件名

private String imageFileName;

private String caption;//文件说明,与页面属性绑定

public void setMyFileContentType(String contentType) {

System.out.println("文件类型 : " + contentType);

this .contentType = contentType;

}

public void setMyFileFileName(String fileName) {

System.out.println("文件名称 : " + fileName);

this .fileName = fileName;

}

public void setMyFile(File myFile) {

this .myFile = myFile;

}

public String getImageFileName() {

return imageFileName;

}

public String getCaption() {

return caption;

}

public void setCaption(String caption) {

this .caption = caption;

}

private static void copy(File src, File dst) {

try {

InputStream in = null ;

OutputStream out = null ;

try {

in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);

out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);

byte [] buffer = new byte [BUFFER_SIZE];

while (in.read(buffer) > 0 ) {

out.write(buffer);

}

} finally {

if ( null != in) {

in.close();

}

if ( null != out) {

out.close();

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

private static String getExtention(String fileName) {

int pos = fileName.lastIndexOf(".");

return fileName.substring(pos);

}

@Override

public String execute() {

imageFileName = new Date().getTime() + getExtention(fileName);

File imageFile = new File(ServletActionContext.getServletContext().getRealPath("UploadImages" ) + "/" + imageFileName);

copy(myFile, imageFile);

return SUCCESS;

}

}

注:此时仅为方便实现Action所以继承ActionSupport,并Overrider execute()方法

在struts2中任何一个POJO都可以作为Action

4.struts.xml清单如下:

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

/ShowUpload.jsp

5.web.xml清单如下:

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

struts-cleanup

org.apache.struts2.dispatcher.ActionContextCleanUp

struts-cleanup

/*

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2

/*

Index.jsp

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

struts-cleanup

org.apache.struts2.dispatcher.ActionContextCleanUp

struts-cleanup

/*

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2

/*

Index.jsp

以上内容是给大家介绍的Java struts2中如何实现图片上传的全部内容,希望大家喜欢。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:配置java环境变量(linux mac windows7)
下一篇:Java多线程的实现方式比较(两种方式比较)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~