最近在做一个小程序 这个小程序有一个下载 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(); } #问题解决~
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于