Struts2实现文件上传(相对路径)

来源:互联网 发布:用户购买数据分析 编辑:程序博客网 时间:2024/06/10 02:35

老师上课讲了两种方法,一种是绝对路径,一种是相对路径。绝对路径太简单了,就不说了。在做相对路径时,忽略了在WebRoot目录下建一个upload目录了,使得一直报错

D:\Tomcat8.0\apache-tomcat-8.0.24\webapps\StrutsUpload\upload\17234475223385572074.jpg (系统找不到指定的路径。)

哎!!上课没观察细节



index.jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>        <title>文件上传</title>  </head>    <body>    <s:form action="myupload" method="post" enctype="multipart/form-data">    <s:file name="upload" label="上传的文件"></s:file>    <s:submit value="上传"></s:submit>    </s:form>  </body></html>

success.jsp代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>上传成功</title>      </head>    <body>    恭喜你!上传成功 <br>  </body></html>

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="default" extends="struts-default"><action name="myupload" class="org.action.UploadAction"><result name="success">/success.jsp</result></action></package><constant name="struts.multipart.saveDir" value="/tmp"></constant></struts>    

StrutsUpload.action

package org.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport{private File upload;private String uploadFileName;public String getUploadFileName() {return uploadFileName;}public void setUploadFileName(String uploadFileName) {this.uploadFileName = uploadFileName;}public File getUpload() {return upload;}public void setUpload(File upload) {this.upload = upload;}public String execute() throws Exception{InputStream is=new FileInputStream(getUpload());String directory="/upload";String target=ServletActionContext.getServletContext().getRealPath(directory);//需要在webroot目录下创建一个upload目录OutputStream os=new FileOutputStream(target+"\\"+uploadFileName);byte buffer[]=new byte[1024];int cnt=0;while((cnt=is.read(buffer))>0){os.write(buffer, 0, cnt);}os.close();is.close();return "success";}}


0 0
原创粉丝点击