最近在做一个小程序 这个小程序有一个下载mp4文件的功能
但是在保存到图册的时候 出现错误提示 saveVideoToPhotosAlbum:fail invalid file type
下载接口
我写了一个接口 以供下载文件 通过流的形式 将文件字节输出给客户端 代码如下
# response对象是 HttpServletResponse类
FileInputStream fileInputStream = null;
ServletOutputStream outputStream = null;
try {
//文件输入流
fileInputStream = new FileInputStream(file);
//HttpServletResponse 输出流
outputStream = response.getOutputStream();
//构建下载文件的文件名
String disposition = "attachment;filename=" + outFileName;
response.addHeader("Content-disposition", disposition);
//边读 边写到输出流
byte by[] = new byte[1024];
int len = -1;
while ((fileInputStream.read(by)) != -1) {
outputStream.write(by, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) fileInputStream.close();
if (outputStream != null) outputStream.close();
}
//这个写法 文件是可以正常下载的 包括浏览器 下载工具 都是可以正常下载的
//但是到了小程序里面 调用saveVideoToPhotosAlbum保存视频的时候 就会提示错误信息 saveVideoToPhotosAlbum:fail invalid file type
//解决方案是 加入一个响应头 Content-Type:video/mp4
修改接口
FileInputStream fileInputStream = null;
ServletOutputStream outputStream = null;
try {
//文件输入流
fileInputStream = new FileInputStream(file);
//Respone 输出流
outputStream = response.getOutputStream();
//构建下载文件的文件名
String disposition = "attachment;filename=" + outFileName;
response.addHeader("Content-disposition", disposition);
//告知客户端 这是一个视频
response.setContentType("video/mp4");
//边读 边写到输出流
byte by[] = new byte[1024];
int len = -1;
while ((fileInputStream.read(by)) != -1) {
outputStream.write(by, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) fileInputStream.close();
if (outputStream != null) outputStream.close();
}
#问题解决~