在JSP中上传文件 - 如何更改上载文件的默认路径

时间:2009-08-05 14:31:41

标签: java jsp upload

我有两个jps页面来处理单个文件的上传。 以下是选择文件的代码:

 org.apache.commons.io.FilenameUtils, java.util.*, 
 java.io.File, java.lang.Exception" %>
...
 <form name="uploadFile" method="POST" action="processUpload.jsp"     
 enctype="multipart/form-data">
     <input type="file" name="myfile"><br />
     <input type="submit" value="Submit" />
 </form>
 ....

// --------处理上传文件---------------------

<%@ page contentType="text/html;charset=windows-1252"%>
<%@ page import="org.apache.commons.fileupload.DiskFileUpload"%>
<%@ page import="org.apache.commons.fileupload.FileItem"%>
<%@ page import="java.util.List"%>
<%@ page import="java.util.Iterator"%>
<%@ page import="java.io.File"%>


<%
    System.out.println("Content Type ="+request.getContentType());
    System.out.println("Cookies" + request.getCookies());

    DiskFileUpload fu = new DiskFileUpload();
    // If file size exceeds, a FileUploadException will be thrown
    fu.setSizeMax(1000000);

    List fileItems = fu.parseRequest(request);
    Iterator itr = fileItems.iterator();

    while(itr.hasNext()) {
      FileItem fi = (FileItem)itr.next();

      //Check if not form field so as to only handle the file inputs
      //else condition handles the submit button input
      if(!fi.isFormField()) {
        System.out.println("\nNAME: "+fi.getName());
        System.out.println("SIZE: "+fi.getSize());
        //System.out.println(fi.getOutputStream().toString());
        File fNew= new File(application.getRealPath("/"), fi.getName());

        System.out.println(fNew.getAbsolutePath());
        fi.write(fNew);
      }
      else {
        System.out.println("Field ="+fi.getFieldName());
      }
    }
 %>

此代码将文件放入我的build \ web文件夹中。 如何设置服务器上不同目录的路径(假设设置了写权限)? 谢谢,

4 个答案:

答案 0 :(得分:2)

使用以下代码(适用于user guide):

// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(dir);

// Create a new file upload handler
DiskFileUpload upload = new DiskFileUpload(factory);

// Parse the request
List /* FileItem */ items = upload.parseRequest(request);

答案 1 :(得分:0)

设置文件上传路径:

<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File('/path/to/store/files'));
DiskFileUpload fu = new DiskFileUpload(factory);

答案 2 :(得分:0)

为什么在创建文件时根本不指定路径?您可以将路径设置为应用程序配置(JNI)的一部分,或者在Web服务器启动时使用系统属性(使用-Dpath = ...),并使用System.getProperty(“path”)读取它。您甚至可以使用系统上定义的环境变量,并使用System.getenv方法读取该环境变量。

Alternativaly,您可以使用File.getTempFile方法创建一个临时文件。如果您只是需要保存文件以使用它来执行某些操作并且再也不使用它,那么这是一个更好的选择 - 但是,您必须在使用后自行删除该文件。

答案 3 :(得分:-1)

...尝试这样的事情:

File newFile = new File(request.getSession().getServletContext().getRealPath("/someUploadDirectoryOnServer/"), multipartFile.getOriginalFilename());