首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

进行文件上传老师出现异常

2013-06-19 
进行文件上传老师出现错误The server encountered an internal error () that prevented it from fulfilli

进行文件上传老师出现错误
The server encountered an internal error () that prevented it from fulfilling this request.
java.lang.NullPointerException
cn.wshd.action.Test_upload.execute(Test_upload.java:59)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

代码

package cn.wshd.action;
import java.io.*;
import com.opensymphony.xwork2.ActionContext;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class Test_upload extends ActionSupport {
 private String title;
 private File upload;
 private String uploadContentType;
 private String uploadFileName;
 private String allowTypes;
 // 接受依赖注入的属性
 private String savePath;
 // 接受依赖注入的方法
 
 public void setSavePath(String savePath) {
  this.savePath = savePath;
 }
 
 private String getSavePath() throws Exception {
  return ServletActionContext.getServletContext().getRealPath(savePath);
 }


public void setTitle(String title) {
  this.title = title;
 }
 public void setUpload(File upload) {
  this.upload = upload;
 }
 public void setUploadContentType(String uploadContentType) {
  this.uploadContentType = uploadContentType;
 }
 public void setUploadFileName(String uploadFileName) {
  this.uploadFileName = uploadFileName;
 }
 public String getTitle() {
  return (this.title);
 }
 public File getUpload() {
  return (this.upload);
 }
 public String getUploadContentType(){
  return (this.uploadContentType);
 }
 public String getUploadFileName() {
  return (this.uploadFileName);
 }
 @Override
 public String execute() throws Exception {
  System.out.println("开始上传单个文件---");
  System.out.println(getSavePath());
  System.out.println("==========" + getUploadFileName());
  System.out.println("==========" + getUploadContentType());
  System.out.println("==========" + getUpload());
  // 判断是否允许上传
  String filterResult = filterType(this.getAllowTypes().split(","));
  if (filterResult != null) {
   ActionContext.getContext().put("typeError","您要上传的文件类型不正确");
   return filterResult;
  }
  // 以服务器的文件保存地址和原文件名建立上传文件输出流
  FileOutputStream fos = new FileOutputStream(getSavePath() + "\"
    + getUploadFileName());
  FileInputStream fis = new FileInputStream(getUpload());
  byte[] buffer = new byte[1024];
  int len = 0;
  while ((len = fis.read(buffer)) > 0) {
   fos.write(buffer, 0, len);
  }


  return SUCCESS;
 }
 public String filterType(String[] types) {
  String fileType = this.getUploadContentType();
  for (String type : types) {
   if (type.equals(fileType)) {
    return null;
   }
  }
  return INPUT;
 }
 public String getAllowTypes() {
  return allowTypes;
 }
 public void setAllowTypes(String allowTypes) {
  this.allowTypes = allowTypes;
 }
}


struts.xml

  <package name="test_upload" extends="struts-default">
            <action name="test_upload" class="cn.wshd.action.Test_upload" method="execute">
                  <param name="allowTypes">
                       image/pjpeg,image/bmp,image/jpg,image/png,image/gif,image/jpeg
                 </param>
                 <param name="savePath">
                       /upload
                 </param>
                       <result name="success">/success.jsp</result>
                       <result name="input">/test_upload.jsp</result>
                    </action>
              </package>

传入savePath的值为空,到底是怎么回事?求大侠帮忙
[解决办法]
59行报错,你看看59行调用的函数哪个报空指针,你确定你的url里面传回来了?“XXX.action?allowTypes=xxx”。
[解决办法]
this.getAllowTypes() = null吧。。
你debug看看。。。
[解决办法]
form表单里是不是有叫allowTypes的参数?struts2先以form中的参数为准
[解决办法]
我没分了,发不了帖子了!!!!!

热点排行