struts2之单个图片上传

原创 2016年08月30日 16:28:22

项目中 经常会遇到图片上传这个功能 这里做下总结与解析以便日后可以直接拿来用

1.struts2 上传图片需要的包

2.struts.xml文件配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="false" />
	<constant name="struts.multipart.maxSize" value="20971520" />
	<constant name="struts.convention.action.suffix" value="Action" />
	<constant name="struts.convention.result.path" value="/pages" />
	<constant name="struts.convention.package.locators" value="action" />
	<constant name="struts.serve.static.browserCache" value="false" />
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<constant name="struts.convention.default.parent.package"
		value="default" />
	<constant name="struts.convention.classes.reload" value="false" />

	<package name="default" namespace="/sys" extends="convention-default">
		<interceptors>
			<interceptor name="sysLoginInterceptor"
				class="com.ideai.interceptor.SysLoginInterceptor"></interceptor>
			<interceptor-stack name="sysInterceptor">
				<interceptor-ref name="sysLoginInterceptor"></interceptor-ref>
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="sysInterceptor"></default-interceptor-ref>
		<!--配置全局转发 -->
		<global-results>
			<result name="exception_global">/common/Error.jsp</result>
			<result name="error_global">/common/Error.jsp</result>
			<result name="success_global">/common/Success.jsp</result>
			<result name="login">/pages/sys/index.jsp</result>
			<result name="success_ajax">/common/SuccessAjax.jsp</result>
		</global-results>

	</package>
</struts>
3.参数设置 conf.properties

upload.file.fs.mode=1
upload.file.fs.base=/opt/webapps/bnk/uploads
upload.file.preview.base=G\:/tmp/preview
upload.file.tmpdir=G\:/tmp/uptmp
upload.file.autodir=G\:/tmp/auto
download.file.base=http://biz.eznext.com.cn:8080/bnk/uploads

4.action

package com.ideai.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.ibm.icu.text.SimpleDateFormat;
import com.ideai.model.Bnkmedical;
import com.ideai.model.FirmInfos;
import com.ideai.model.FirmUser;
import com.ideai.service.BnkmedicalService;
import com.ideai.service.FirmInfosService;
import com.ideai.service.SessionManagerService;
import com.ideai.util.BeanArgUtil;
import com.ideai.util.ConfUtil;
import com.ideai.util.DateJsonValueProcessor;
import com.ideai.util.FileUtil;

@Namespace("/sys")
@Controller
public class FileAction extends BaseAction {

	private static final long serialVersionUID = 5911980217599091918L;

	private static Logger logger = Logger.getLogger(FileAction.class);

	@Autowired
	private SessionManagerService SessionManagerservice;
	
	@Autowired
	private FirmInfosService firminfosService;
	
	@Autowired
	private BnkmedicalService bnkmedicalService;
	
	private File file;
	// 提交过来的file的名字
	private String fileFileName;

	public String getFileFileName() {
		return fileFileName;
	}

	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	public String getFileContentType() {
		return fileContentType;
	}

	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	// 提交过来的file的MIME类型
	private String fileContentType;

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}
	@Action(value = "upload")
	public void upload() throws IOException {
		PrintWriter out;
		try {
			response.setContentType("text/html;charset=UTF-8");
			response.setCharacterEncoding("UTF-8");
			Map<String, Object> outJson = new HashMap<String, Object>();
			out = response.getWriter();
			JsonConfig config = new JsonConfig();
				config.registerJsonValueProcessor(Date.class,
						new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss"));
				String sessionId=request.getParameter("sessionId");
				Map<String, Object> sessio=SessionManagerservice.getSession(sessionId);
				if(sessio==null){
				    outJson.put("c",2);
					outJson.put("m","session失效");
					outJson.put("r", "");
					JSONObject jSONArray = JSONObject.fromObject(outJson,config);
			     	out.write(jSONArray.toString());
			    }
				FirmUser getUser = (FirmUser)sessio.get("user");
				FirmInfos firmInfos=firminfosService.selectByPrimaryKey(getUser.getFfid());
				String path = ConfUtil.getProperty("upload.file.fs.base") + "/";
				String durl = ConfUtil.getProperty("download.file.base") + "/";
				UUID uuid = UUID.randomUUID();
				File outs = new File(path + uuid.toString() + "." + FileUtil.getFileExt(fileFileName));
				durl += uuid.toString() + "." + FileUtil.getFileExt(fileFileName);
				FileUtil.copyFile(file, outs);
				firmInfos.setFaddress(durl);
				if(firminfosService.updateByPrimaryKey(firmInfos)>0){
				        outJson.put("c",1);
			        	outJson.put("m","上传成功");
					outJson.put("r", durl);
					JSONObject jSONArray = JSONObject.fromObject(outJson,config);
		         	     	out.write(jSONArray.toString());
				}else{
				        outJson.put("c",0);
					outJson.put("m","上传失败");
					outJson.put("r", "");
					JSONObject jSONArray = JSONObject.fromObject(outJson,config);
			     	out.write(jSONArray.toString());
				}
				//resp.setR(durl);
				//responseWriteResp();
		} catch (Exception e) {
			logger.warn("",e);		
		}
	}
	
	@Action(value = "get")
	public void get() {
		String path = ConfUtil.getProperty("upload.file.fs.base") + "/" + fileFileName;
		try {
			String ext = FileUtil.getFileExt(fileFileName);
			String mine = FileUtil.getFileMimeByExt(ext);
			response.setContentType(mine);
			FileInputStream in = new FileInputStream(path);
			OutputStream out = response.getOutputStream();
			FileUtil.copyStream(in, out);
			in.close();

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
5.需要注意的 前台传过来的参数 name属性的值应该为 file

版权声明:本文为博主原创文章,未经博主允许不得转载。

struts2实现单个图片上传

  • 2013年10月09日 10:20
  • 3.45MB
  • 下载

uploadifive struts2实现图片上传

  • 2015年03月06日 10:03
  • 3.62MB
  • 下载

基于struts2的图片上传

图片上传 jsp页面 头像:

struts2图片上传

  • 2012年12月08日 20:55
  • 60KB
  • 下载

Struts2图片上传

  • 2013年05月26日 18:57
  • 10.74MB
  • 下载

使用Struts2实现图片上传到服务器指定的文件夹中

首先要导入stuts2的所有jar包以及文件上传的jar包     在jsp页面中主要代码:             本地浏览:           上传到相应的Action中的代...
  • janecer
  • janecer
  • 2013年05月19日 20:01
  • 2991

CKEditor实现图片上传(使用Struts2)

  • 2014年09月01日 18:02
  • 4.42MB
  • 下载

最简单的struts2图片上传+回显

  • 2016年12月11日 15:52
  • 3.43MB
  • 下载

Java框架Struts2实现图片上传

Struts 2 框架为处理文件上传提供了内置支持,它使用“在 HTML 中基于表单的文件上传”。当上传一个文件时,它通常会被存储在一个临时目录中,而且它们应该由 Action 类进行处理或移动到一个...

Android+struts2实现图片上传

  • 2014年02月11日 14:35
  • 4.32MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts2之单个图片上传
举报原因:
原因补充:

(最多只允许输入30个字)