struts2 中上传文件 问题

jin75hong 2009-05-10 10:38:41
一、<s:a> 怎么设置弹出新对话框啊?也就是 _blank属性
二、拿来孙鑫的 Struts2 深入详解,抄了代码 运行时没报错,可是查看上传文件的文件夹中没有发现对应上传的文件,奇怪了! 我用的是MyEclipse7.0 。好奇怪啊。返回的页面上 fileFileName dir都有,不过fileContextType 显示不出来.

请高手帮忙啊!!!!

具体代码:

package tea;

import com.opensymphony.xwork2.ActionSupport;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletContext;
import org.apache.struts2.ServletActionContext;
public class LoadPicAction extends ActionSupport {
private File file;
private String fileFileName;
private String fileContextType;
private String uploadDir;


public File getFile() {
return file;
}

public void setFile(File file) {
this.file = file;
}

public String getFileFileName() {
return fileFileName;
}

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

public String getFileContextType() {
return fileContextType;
}

public void setFileContextType(String fileContextType) {
this.fileContextType = fileContextType;
}

public String getUploadDir() {
return uploadDir;
}

public void setUploadDir(String uploadDir) {
this.uploadDir = uploadDir;
}

public void validate() {
if(fileFileName==null || fileFileName.equals("")){
this.addFieldError("form1", "请选择上传照片!");
}

}

public String execute() throws Exception {
this.setUploadDir("/tphoto");
String path=ServletActionContext.getServletContext().getRealPath(uploadDir);
File dir=new File(path);
if(!dir.exists())dir.mkdir();

BufferedOutputStream bos=null;
BufferedInputStream bis=null;
try{
FileInputStream fis=new FileInputStream(file);
bis=new BufferedInputStream(fis);

FileOutputStream fos=new FileOutputStream(new File(dir,this.getFileFileName()));
bos=new BufferedOutputStream(fos);

byte[] buf=new byte[4096];

int len=-1;
while((len=bis.read(buf))!=-1){
bos.write(buf, 0, len);
}
}
catch (IOException e) {
this.addFieldError("file", "上传照片失败!");
return INPUT;
}
finally{
try{
if(null!=bis)bis.close();
}
catch(IOException e){
e.printStackTrace();
}

try{
if(null!=bos)bos.close();
}
catch(IOException e){
e.printStackTrace();
}
}
return SUCCESS;
}




}
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jin75hong 2009-05-12
  • 打赏
  • 举报
回复
恩。。。。。搜索了下,果然是这样。看来要在以后部署的时候才能看到图片在指定文件夹中了


谢谢大家啊!
张金富 2009-05-12
  • 打赏
  • 举报
回复
应该是上传到Tomcat里面了。如果你在Eclipse里部署的话,就会这样。
lvzhu18 2009-05-12
  • 打赏
  • 举报
回复
在程序中打印:file、fileFileName、fileContextType看下结果,查看下jsp文件和web.xml是否有错误。
a1123454 2009-05-12
  • 打赏
  • 举报
回复
我之前的问题是文件上传成功了,但是在WEB-INF目录的文件夹下没有找到上传的文件,后来我全盘搜索,终于找了。
因为用的是MyEclipse的内置tomcat,所以文件被上传在tomcat的那个地方了,也不知道你是否和我的相同,试试看吧
renxianzuo 2009-05-12
  • 打赏
  • 举报
回复
package com.action;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UpLoadAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String title;
private File upload;
private String uploadFileName;
private String uploadContentType;
private String savePath;

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public File getUpload() {
return upload;
}

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

public String getUploadFileName() {
return uploadFileName;
}

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

public String getUploadContentType() {
return uploadContentType;
}

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

@SuppressWarnings("deprecation")
public String getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath);
}

public void setSavePath(String savePath) {
this.savePath = savePath;
}

@Override
public String execute() throws Exception {
try{
FileOutputStream fos = new FileOutputStream(getSavePath() + "\\"
+ getUploadFileName());
FileInputStream fis = new FileInputStream(getUpload());
BufferedInputStream bff = new BufferedInputStream(fis);
byte[] buffer = new byte[1024*4];
int len = 0;
while ((len = bff.read(buffer)) > 0) {
System.out.println("len = "+len);
fos.write(buffer, 0, len);
}
}catch(IOException e){
e.printStackTrace();
}

return SUCCESS;
}

}
<action name="upload" class="com.action.UpLoadAction">
//上传的类型
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpg,image/pjpeg
</param>
<param name="maximumSize">1024000</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
//上传的路径
<param name="savePath">/upload</param>
<result>/uploadResult.jsp</result>
<result name="input">/error.jsp</result>
</action>
jin75hong 2009-05-11
  • 打赏
  • 举报
回复
我配置啦,怎么还是没用啊!不报错,可图片没上传成功啊!55555555555
renxianzuo 2009-05-10
  • 打赏
  • 举报
回复
<filter>
<filter-name>struts-clearup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-clearup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在web.xml中这个配置了没有
jin75hong 2009-05-10
  • 打赏
  • 举报
回复
为什么没人来啊!!!!!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧