各位大侠,大家下午好。
最近在忙文件上传的东西,在网上找了几个案例,终于被我找到一个可以成功上传的例子。
这个例子能够将文件上传上去,但tomcat后台说文件拒绝访问,还有一大堆的exception......可文件确真的是传上去了......
贴上servlet处理代码:package com.test.servlet;import java.io.File;
import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UploadServlet extends HttpServlet { @Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// super.doPost(arg0, arg1);
request.setCharacterEncoding("UTF-8");
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = request.getSession().getServletContext().getRealPath(
"/upload");
factory.setRepository(new File(path));
factory.setSizeThreshold(1024 * 1024); ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request); for (FileItem item : list) {
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString("UTF-8");
request.setAttribute(name, value);
} else {
String name = item.getFieldName();
String value = item.getName();
int start = value.lastIndexOf("\\");
String fileName = value.substring(start + 1);
request.setAttribute(name, fileName); item.write(new File(path, fileName));
}
}
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("/result.jsp").forward(request, response);
}}
下面是tomcat报的异常:java.io.FileNotFoundException: D:\apache-tomcat-6.0.29\webapps\FileUpload\upload (拒绝访问。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at org.apache.commons.fileupload.disk.DiskFileItem.write(DiskFileItem.java:416)
at com.test.servlet.UploadServlet.doPost(UploadServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Unknown Source)拒绝访问,文件确上传上去了,我想破了脑袋也想不明白...
希望哪位大虾能够指点一二,谢谢了

解决方案 »

  1.   

    帮你查了一下,好像是有类似权限问题。有一个消极的解决方法就是
    try{}catch(Exception){}
    在catch块儿里什么都不做。
    看看能解决不。
    只要功能能实现就可以了吧
      

  2.   

    还有一个方法就是给D:\apache-tomcat-6.0.29\webapps\FileUpload\upload文件夹设置权限。
      

  3.   

    这玩意儿怎么设置权限?
    右键upload文件夹->??->??想不明白......
      

  4.   

    D:\apache-tomcat-6.0.29\webapps\FileUpload\upload  右键安全-》 everyone ,如果是权限问题,不能保存吧,还是调试一下吧
      

  5.   

    我用的是苹果系统没法告诉你,windows的话应该可以设置文件夹的读写用户等属性吧。你设置一下试试
      

  6.   

    java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\loadfile\source (拒绝访问。)
      我这也是帮忙解决一下啊
      

  7.   

    在 tomcat webapps 下,找着指定的工程, 属性 | web共享|
    选择共享文件夹(s) 选项,在点击 | 编辑属性|  访问权限可以全部选择上, 主要是 应用程序权限 应该选择 [执行]