1

コントローラーからファイルをダウンロードしています。それは動作しません。これは、ファイル名に「,」が含まれているためです。名前から「、」を削除すると機能します。これに対する回避策はありますか。String.replace("," "") を行う必要があります。もっと良い方法があるはずですか?

response.setHeader("Content-Disposition", "inline; filename=" + "abbbbababbaababba.4.1.2013,aakdfhfdf.xlsx");

完全な方法

@RequestMapping(value = "/newsimage/{newsImageId} ", method = RequestMethod.GET)
public void getImage(HttpServletRequest request, HttpServletResponse response, @PathVariable long newsImageId) {

    NewsImage newsImage = newsImageService.findById(newsImageId);
    String fileName = newsImage.getFileName();
        response.setHeader("Content-Disposition", "inline; filename=" + "abbbbababbaababba.4.1.2013,aakdfhfdf.xlsx");
    response.setContentType(newsImage.getContentType());
    // response.setHeader("Content-Disposition", "attachment;filename=" + newsImage.getFileName());

    OutputStream out;
    try {
        out = response.getOutputStream();
        out.write(newsImage.getData());
        out.flush();
    } catch (IOException e) {
        logger.error(e.getMessage());
    }

}
4

2 に答える 2

6

ファイル名を引用する必要があります。引用しないと、ヘッダー属性の一部として解釈されます。

response.setHeader("Content-Disposition", 
    "inline; filename=\"" + "abbbbababbaababba.4.1.2013,aakdfhfdf.xlsx" + "\"");
于 2013-01-09T14:34:39.037 に答える
2

予約文字と単語がありますが、「、」はそれらの1つではありません。それでも、「、」の使用は控えます(「-」に置き換えます)。また、 '。' 接尾辞以外には使用しないでください。

本当に「」を使用したい場合は、オペレーティングシステム(またはファイルシステム)の制限のためではなく、HTTPヘッダーのために、ファイル名全体を引用する必要があります。

于 2013-01-09T14:34:42.803 に答える