2

ユーザーが最初に画像をWebページにアップロードし、そのフォームを送信すると、保存用に拡大された画像が表示される小さな画像スケーリングツールを構築しています。しかし、ユーザーが同じ画像を異なる幅と高さのパラメーターでスケーリングする要求を送信すると、問題が発生します。この場合、サーブレットで設定したコンテンツ処理ヘッダーが機能していないようで、2 番目のリクエストの後の画像は、コンテンツ処理で言及したファイル名と拡張子ではなく、サーブレットのクラス名のみで送信されます。ヘッダ。

response.setContentType("image/jpeg");
response.setHeader("Content-disposition","inline;filename="+filename);

ライター自体でハードコーディングも試みましたが、使用しているものにはファイル名のパラメーターがないようです

private void doDownload(HttpServletResponse resp, BufferedImage bump,
            InputStream filecontent) throws IOException {

        //http://stackoverflow.com/questions/9340569/jpeg-image-with-wrong-colors
        OutputStream out = resp.getOutputStream();
        Iterator<ImageWriter> iter = ImageIO
                .getImageWritersByMIMEType("image/jpeg");
        ImageWriter writer = iter.next();
        ImageWriteParam iwp = writer.getDefaultWriteParam();
        iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        iwp.setCompressionQuality(1);
        ImageOutputStream imgOut = new MemoryCacheImageOutputStream(out);
        writer.setOutput(imgOut);
        IIOImage image = new IIOImage(bump, null, null);
        writer.write(null, image, iwp);
        out.flush();
        out.close();
        writer.dispose();

    }

出力ストリームに書き込むときに画像のファイル名を設定する方法はありますか?

4

1 に答える 1

0

このクラスで静的整数変数を宣言します。

private static int fileno=0;


private void doDownload(HttpServletResponse resp, BufferedImage bump,
            InputStream filecontent) throws IOException {

Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(1);
String OUTPUTFILE = "C:/Users/Harish/Desktop/jpegFile"+fileno++;
File file = new File(OUTPUTFILE);
//Your fileName will be jpegFile0; and next time jpegFile1 and so on.
FileImageOutputStream imgOut = new FileImageOutputStream(file);
writer.setOutput(imgOut);
IIOImage image = new IIOImage(bump, null, null);
writer.write(null, image, iwp);
writer.dispose();

 }
于 2012-12-19T13:34:37.863 に答える