钉钉微应用的如何实现文件下载功能(下载我们公司自己服务器的文件)
Re钉钉微应用的如何实现文件下载功能(下载我们公司自己服务器的文件
补充说明一句,还是上面的代码。在有些Android手机上是可以成功下载的,会调用手机浏览器进行下载。但是有些机型的Android手机,以及IOS手机上是没有反应的。这种与手机机型有关系的问题要怎么解决?
-------------------------
Re钉钉微应用的如何实现文件下载功能(下载我们公司自己服务器的文件
改了一行代码,改为
response.setContentType('application/octet-stream');
目前的效果是在android的浏览器或钉钉微应用,以及IOS手机的浏览器都可以触发下载功能。
但是在IOS手的钉钉微应用里却还是直接打开。没触发下载。
-------------------------
Re钉钉微应用的如何实现文件下载功能(下载我们公司自己服务器的文件
楼主后来解决了,一直忘记来更新帖子了。
针对之前的代码做了一点改动,见红色字体部分。
public ActionForward downloadAttach(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
String attId = request.getParameter('attId');
DdHolidayServiceInvoke.Invoke service = DdHolidayServiceInvoke.getInstance(request);
DdHolidayModel model = service.getAttachInfoById(attId);
String attachUrl = request.getSession().getServletContext().getRealPath(model.getAttachUrl());
try {
File ft = new File(attachUrl);
FileInputStream fin = new FileInputStream(ft);
response.reset();// 设置为没有缓存
// 弹出下载窗口
//response.setContentType('application/txt;charset=UTF-8');
response.setHeader('Cache-Control', '');
response.setContentType('application/
octet-stream');
// 显示下载文件名称
response.setHeader('Content-Disposition', 'attachment;filename='
+ URLEncoder.encode(model.getAttDisName(),'utf-8'));
/* attachment是以附件下载的形式,inline是以线上浏览的形式。*/
OutputStream output = response.getOutputStream();
byte[] buf = new byte[1024];
int r = 0;
while ((r = fin.read(buf, 0, buf.length)) != -1) {
output.write(buf, 0, r);
}
response.getOutputStream().flush();
response.getOutputStream().close();
return null;
} catch (Exception e) {
return null;
}
}
赞0
踩0