IEを使用して電子メールで添付ファイルをダウンロードできません。何も起こらなかった。しかし、私のコードはChromeで機能します。ダウンロードコードは次のとおりです。
public String downloadattach() {
InputStream attStream = null;
OutputStream oStream = null;
try {
String mailid = getRequest().getParameter("mailid");
String filename = getRequest().getParameter("filename");
MailboxServ serv = new MailboxServImpl();
CmMailbox mailbox = serv.getMailbox(mailid);
if (mailbox != null && mailbox.getCmessageBody() != null) {
Session session = Session.getInstance(System.getProperties(),
null);
InputStream iStream = mailbox.getCmessageBody()
.getBinaryStream();
MimeMessage message = new MimeMessage(session, iStream);
MailManage mm = new MailManage();
attStream = mm.getAttach(message, filename);
if (attStream != null) {
getResponse().setContentType("APPLICATION/OCTET-STREAM");//("APPLICATION/x-msdownload");
getResponse().setContentLength(attStream.available());
getResponse().setHeader("Content-Disposition",
"attachment; filename=\"" + URLEncoder.encode(filename, "UTF-8") + "\"");
byte[] buff = new byte[2048];
oStream = getResponse().getOutputStream();
int count = 0;
while ((count = attStream.read(buff, 0, 1024)) > 0) {
oStream.write(buff, 0, count);
}
oStream.flush();
oStream.close();
attStream.close();
oStream = null;
}
} else {
writeMsg(false, "下载附件出错!邮件不存在或该邮件不包含指定附件!");
}
} catch (Exception e) {
// TODO: handle exception
logger.error(e.toString());
writeMsg(false, "下载附件出错!错误:" + e.getMessage());
} finally {
if (attStream != null) {
try {
attStream.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
if (oStream != null) {
try {
oStream.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
return null;
}
jspの添付ファイルへのリンクは次のとおりです。
'<a href="downloadattachMail.action?mailid='+mailboxid+
'&filename='+fname+'" target="_blank">'+fname+'</a> '+fsize
リンク(例:localhost:8081 / CMAIL / downloadattachMail.action?mailid = 40e4c0b6386e81e801386f0e67ce0018&filename = java-event中文文件.doc)で新しいウィンドウを開いただけですが、何も起こりません。また、「名前を付けて保存」メニューも機能しません。何か問題でもありますか?ありがとうございました!
ダウンロードは、chrome、firefox、IE9で動作します。ただし、IE8では機能しません(IE7とIE6でも機能しない可能性があります)。
私はその理由を見つけました。しかし、それは非常に奇妙です!漢字をデコードするために、Tomcatの構成を次のように変更しました。
URIEncoding="UTF-8"
添付ファイルの名前が英語の場合、すべて正常に機能します(chrome、ie8、ie9、firefox)。ただし、名前に漢字が含まれている場合、ie8を使用するとパラメーターが混乱しますが、chrome、firefox、ie9ではすべてが良好です。tomcatの設定を変更しました:
URIEncoding="GBK"
Ie8はうまく機能しますが、Chrome、Firefoxは機能しません。
私は解決策を見つけて、それをみんなに共有しました:
1)。プロジェクト全体をUTF-8に設定し、jspもutf-8に設定します。2)。Jsでは、「encodeURI()」を使用してURLをエンコードします。3)。取得するには、request.getParameter()を使用して取得します。よろしくお願いします!