struts2实现文件上传

本文详细介绍了使用JSP页面接收用户上传的文件,并通过Struts框架将文件信息存入数据库的过程,包括配置Struts.xml、编写对应的Action类及实现文件上传和数据库插入的基本步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:编写jsp页面

<td>
 	<input type="text" name="address" id="ftext" readonly >
 	<input type="button" onclick="felement.click()" value="上传" >
 	<input type="file"" name="upload" id="felement" style="opacity: 0" onchange="ftext.value=this.value; ">
 	</td>

第二步:配置struts.xml

<package name="action"  extends="struts-default">
		<action name="InsertPic" class="MyPicAction.AddMyPicAction">
			<result name="input">/error.jsp</result>
			<result name="success">/Succeed.jsp</result>
		</action>
	</package>

第三步:编写action

 

package MyPicAction;
import java.io.File;

import javax.servlet.ServletContext;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.util.ServletContextAware;

import pojo.Mypic;
import UserDao.DBManagement;

import com.opensymphony.xwork2.ActionSupport;

public class AddMyPicAction extends ActionSupport implements
ServletContextAware{//实现这个接口,对context进行传值
	private ServletContext context;
 	private String picName;//表单传递的值
	private String style;//表单传递的值
	private File upload;// 实际上传文件
          private String uploadContentType; // 文件的内容类型
          private String uploadFileName; // 上传文件名
	

	
	public File getUpload() {
		return upload;
	}

	public void setUpload(File upload) {
		this.upload = upload;
	}

	public String getUploadContentType() {
		return uploadContentType;
	}

	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public String getUploadFileName() {
		return uploadFileName;
	}

	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}


	public String getPicName() {
		return picName;
	}

	public void setPicName(String picName) {
		this.picName = picName;
	}

	public String getStyle() {
		return style;
	}

	public void setStyle(String style) {
		this.style = style;
	}

	@Override
	public String execute() throws Exception {
		String targetDirectory="";
		String filename = uploadFileName;
		 try {
	            
	            targetDirectory = context.getRealPath("/upload");
	            String targetFileName = uploadFileName;
	            File target = new File(targetDirectory, targetFileName);
	            FileUtils.copyFile(upload, target);            
	            
	            setUploadFileName(target.getPath());//保存文件的存放路径
	        } catch (Exception e) {
	            addActionError(e.getMessage());

	            return INPUT;
	        }
	        System.out.println(uploadFileName);
	        DBManagement db = new DBManagement();
			   Mypic mypic = new Mypic();
			   mypic.setAddress("./upload/"+filename);
			   mypic.setName(picName);
			   mypic.setFlag(style);
				if(db.InsertPic(mypic))
				{
					return SUCCESS;
				}
				else
				{
					return ERROR;
				}
		
	}

	public void setServletContext(ServletContext context) {
		this.context = context;
		
	}
}
此时文件已经上传至./upload/***中了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值