最近在做一个小程序 这个小程序有一个下载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();
        }
		
		#问题解决~