周报——struts上传文件

在刚开始写上传文件的代码时候,出现了以下错误:

Servlet.service() for servlet default threw exception
java.io.FileNotFoundException: E:/学习软件/My Tools/tomcat-6.0.16/webapps/upload/picture/03.jpg (系统找不到指定的路径。)
 at java.io.FileOutputStream.open(Native Method)
 at java.io.FileOutputStream.<init>(Unknown Source)
 at java.io.FileOutputStream.<init>(Unknown Source)
 at action.ResourceAction.execute(ResourceAction.java:147)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

红色部分表明了在服务器上没有picture这个文件夹(upload是工程名),所以要在WebRoot下新建一个文件夹:picture

下面附上上传文件(在这里是图片)代码:

UploadAction.java:

package action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport
{
 private String name;
 private File upload;
 private String uploadContentType;
 private String uploadFileName;
 private String savePath;
 public String getName()
 {
  return name;
 }
 public void setName(String name)
 {
  this.name = name;
 }
 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;
 }
 @SuppressWarnings("deprecation")
 public String getSavePath()
 { String realpath=ServletActionContext.getRequest().getRealPath(savePath);
  String filePath=realpath+"/"+getUploadFileName();
  return filePath;
 }
 public void setSavePath(String value)
 {
  this.savePath = value;
 }
 

 public String execute() throws Exception{
  InputStream is=new FileInputStream(getUpload());
  OutputStream os=new FileOutputStream(getSavePath());
  byte []buffer=new byte[1024];
  int count=0;
  while((count=is.read(buffer))>0){
   os.write(buffer, 0,count);
  }
  is.close();
  os.close();
  return SUCCESS;
 }

 
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="
http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 <filter>
  <filter-name>struts 2</filter-name>
  <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
  </filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts 2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 
</web-app>
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>addResource</title>
 </head>
 
 <body>
  <form action="upload.action" method="post"
   ENCTYPE="multipart/form-data">
    
   资源名称:
   <input type="text" name="name" size=20>
   <br>
   是否公共:
   <input type="checkbox" name="ispublic" checked>
   <br>
   资源类型:
   <input type="radio" name="classification" checcked>
   视频
   <input type="radio" name="classification">
   音频
   <input type="radio" name="classification">
   图像
   <input type="radio" name="classification">
   其他
   <br>
   选择资源:
   <input type="file" name="upload">
   <br>
   <input type="submit" value="开始上传">
  </form>
 </body>
</html>

success.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>
  添加成功!<br>
  <!-- 输出上传的表单里的文件属性 -->
  文件名称:<s:property value="+name"/><br>
  文件为:
  <img src="<s:property value="'picture/'+uploadFileName"/>"/><br>
 </body>
</html>

struts.xml

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "/WEB-INF/classes/struts-2.0 .dtd" >
<struts>
 
 <package name="default" extends="struts-default">
   <!--以后在这里添加action-->
   <action name="upload" class="action.UploadAction">
   <param name="savePath">/picture</param>
   <result name="success">/success.jsp</result>
   </action>
 </package>
</struts>

 

ps:别忘了添加strtus的基本类库以及上传文件的类(commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
mysql-connector-java-5.1.5-bin.jar
ognl-2.6.11.jar
struts2-core-2.0.14.jar
xwork-2.0.7.jar)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值