0

リソース ディレクトリに .apk ファイルがあり、モバイル デバイスから直接ダウンロードしたいと考えています。

Chrome を使用している場合、または PC で試している場合はすべて問題ありませんが、デフォルトの Android ブラウザを使用すると、.htm ファイルと次のようになります。

ClientAbortException: java.io.IOException: 書き込み失敗

何が起こっているのか、それともブラウザのバグなのかわかりません。

いくつかのループの後に例外がスローされました:

out.write(outputByte, 0, 4096);

助言がありますか?ありがとう!

これは私のコードです:

 @RequestMapping(method = RequestMethod.POST)
public String download(@ModelAttribute("apkDownload") @Valid ApkDownloadDTO apkDownload, ModelMap model, HttpServletRequest request,
    HttpServletResponse response, BindingResult result) {


InputStream is = ApkDownloadController.class.getResourceAsStream("/apk/mine.apk");


try {

    response.addHeader("Content-Description", "File Transfer");
    response.addHeader("Content-Type", " application/vnd.android.package-archive");
    response.addHeader("Content-Disposition", "attachment; filename=mine.apk");
    response.addHeader("Content-Transfer-Encoding", "binary");

    ServletOutputStream out = response.getOutputStream();
    byte[] outputByte = new byte[4096];

    while (is.read(outputByte, 0, 4096) != -1) {
    out.write(outputByte, 0, 4096);
    }
    is.close();
    out.flush();
    out.close();

} catch (IOException e) {
    log.error(e);
} finally {
    try {
    is.close();
    } catch (IOException e) {
    log.error(e);
    }
}
return null;

}
4

1 に答える 1