0
アップロードされたファイルをマルチパートとして受け取ったTomcatサーバーに配置された安らかなJersey Webサービスにファイルをアップロードしようとしています。これは、Windows OS上で完全に正しい動作しますが、Linux上のファイルには、以下の保存方法からスロー例外なく保存に失敗:アップロードされたファイルがJava-Jerseyで例外がスローされずに保存されない
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadProductImage(
@FormDataParam("file") final InputStream uploadedInputStream,
@FormDataParam("file") final FormDataContentDisposition cdh,
@FormDataParam("file") final FormDataBodyPart body
) {
FileManager fileManager = new FileManager();
String fileName;
try {
int read = 0;
byte[] bytes = new byte[1024];
OutputStream out = new FileOutputStream(new File("/home/files"));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return Response.status(Response.Status.CREATED).entity(gson.toJson(cdh.getName())).build();
}
マルチパートの変数がすでにweb.xmlファイルで宣言されているよう:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
コードに見られるように、ターゲットパスは "/ home/files"です。
パスが存在し、ターゲットファイルの所有者をtomcatグループに変更しようとしましたが、パスのすべてのアクセス許可を結果なしで付与しました。 私はあなたの助けに感謝します。
*パスが存在することを確信しています。*存在する場合は、あなたが許可を持っているかどうか疑いがあります。あなたの例外をキャッチするコードを表示してください –
'uploadedInputStream'はどこに設定されていますか?ファイルが開かないと表示されません。 –
このアップデートでは、このメソッド全体が表示されています。アップロードされているため、以前にファイルが存在していない可能性があります。 – MrMisery