0

サーバーに画像をアップロードしようとしています... JSPを使用しています

JSP の場合:

 input id="fileUpload" type="file" name="file"

Java の場合:

  File file = new File( request.getParameter("file"));
  String path = file.getAbsolutePath();
  BufferedImage sourceImage = ImageIO.read(new File(path));
  ImageIO.write(sourceImage, "jpg", new File("E:/h.jpg"));

Internet Explorer を使用して画像をアップロードすると機能しますが、Chrome、Firefox、および Safari ブラウザではファイルパス「fakepath/filename.jpg」が表示され、画像を読み取ることができません。

4

1 に答える 1

2

Internet Explorer では、アクセス元と同じマシンでアプリケーションを実行している可能性が高いため、多かれ少なかれ偶然に動作します。ファイルをアップロードすると、Internet Explorer は実際のC:\Users\Administrator\Desktop\Image.jpgファイル名を送信します。Web アプリケーションは同じマシン上で実行されるため、ディスクからそのファイルを読み取ることができます。

ただし、Chrome と Firefox は、クライアントからアプリケーションへのフル パス名を公開したくないため、fakepath\Image.jpg. ディスクにそのようなファイルがないため、Web アプリケーションが画像を読み取ることができません。

あなたがすべきことは、リクエストからさまざまな部分を抽出し、アップロードされたファイルを含む部分を見つけて、 (ファイルからではなく) リクエストからデータを読み取ることです。幸いなことに、このコードをすべて自分で考案する必要はありません。Apache Commons Fileuploadを使用すると、難しい部分はすべて処理してくれます。

于 2013-07-19T06:02:11.753 に答える