1

我在将文件写入系统中 tomcat 服务器的本地主机时遇到问题。

我如何在下面提到的位置写入文件?当文件上传到提到的位置时,我收到了回复。但我不知道它存储在我的系统中的什么位置。这是正确的做法吗??

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

    String uploadedFileLocation = "http://127.0.0.1:8080/Attachments"
            + fileDetail.getFileName();

    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);

    String output = "File uploaded to : " + uploadedFileLocation;

    return Response.status(200).entity(output).build();

}

private void writeToFile(InputStream uploadedInputStream, String uploadedFileLocation) { 
  try { 
    OutputStream out = new FileOutputStream(new File( uploadedFileLocation)); 
    int read = 0; 
    byte[] bytes = new byte[1024]; 
    out = new FileOutputStream(new File(uploadedFileLocation)); 
    while ((read = uploadedInputStream.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
    } 
    out.flush(); 
    out.close(); 
  } catch (IOException e) { 
    e.printStackTrace(); 
  } 
} 

实际上我从http://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/得到了这个 [writeToFile] 代码

4

2 回答 2

1

如果要将文件写入与 Web 服务器相同的服务器,则 uploadFileLocation 应该是uploadedFileLocation = "/your_uploaded_file_direcoty/";HTTP URL 以外的目录。

如果你想通过 http 将文件写入远程服务器,你可以使用一些 http 框架。

于 2012-08-03T09:36:20.657 回答
1

您正在尝试写入File被调用的http://127.0.0.1:8080/Attachments/something.else. 那肯定行不通。根据JavaDoc

如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,FileNotFoundException则抛出 a。

由于您只是打印出异常堆栈跟踪,但不处理失败,因此您不会得到写入文件失败的指示。检查您的服务器日志,会有一个堆栈跟踪说明您尝试访问的文件找不到。

相反,生成一个文件名,例如System.getProperty("java.io.tmpdir") + fileDetail.getFileName(),然后写入该文件。该类JavaDocFile指出:

在 UNIX 系统上,该属性的默认值通常是“/tmp”或“/var/tmp”;在 Microsoft Windows 系统上,它通常是“C:\WINNT\TEMP”。

于 2012-08-03T09:36:33.030 回答