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(); 
  } 
} 

実際、私はこの [writeToFile] コードをhttp://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/から入手しました。

4

2 に答える 2

1

ファイルを Web サーバーと同じサーバーに書き込みたい場合、uploadedFileLocationuploadedFileLocation = "/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によると:

ファイルが存在するが通常のファイルではなくディレクトリである場合、存在しないが作成できない場合、またはその他の理由で開くことができない場合は、 aFileNotFoundExceptionがスローされます。

例外スタックトレースを出力するだけで失敗を処理しないため、ファイルの書き込みが失敗したという兆候は得られません。サーバーログを確認してください。アクセスしようとしているファイルが見つからないことを示すスタックトレースがあります。

代わりに、たとえば などのファイル名を生成し、System.getProperty("java.io.tmpdir") + fileDetail.getFileName()そのファイルに書き込みます。クラスJavaDoc にはFile次のように記載されています。

UNIX システムでは、このプロパティーのデフォルト値は通常、「/tmp」または「/var/tmp」です。Microsoft Windows システムでは、通常は「C:\WINNT\TEMP」です。

于 2012-08-03T09:36:33.030 に答える