后台返回音频为文件流可以通过转化为blob对象的方式处理。后台返回音频为文件流可以通过转化为blob对象的方式处理,在请求后台接口时需要把responseType设置为blob格式。前端把后台返回的文件流转化为blob对象,然后利用windowURLcreateObjectURL把blob对象转化为url,然后利用a标签进行下载。文件流是继承自iostream。与iostream、sstream共同作为头文件构成IO标准库。
方法如下
function convertImgToBase64(url, callback, outputFormat)
{var canvas = documentcreateElement('CANVAS'),
ctx = canvasgetContext('2d'),
img = new Image;
imgcrossOrigin = 'Anonymous';
imgonload = function(){canvasheight = imgheight;
canvaswidth = imgwidth;
ctxdrawImage(img,0,0);
var dataURL = canvastoDataURL(outputFormat || 'image/png');
callbackcall(this, dataURL);
canvas = null; };
imgsrc = url;}
法1: 无需js,直接用a标签去接你的输出流 <a href="<你的返回流的Action路径>" >下载</a> 方法2:使用js,前提是你使用的是现代浏览器,支持html5特性(主要是新的XML>
没有对乱码进行转译。后端会返回文件流的形式,前端没有收到token,前端需要对乱码进行转译成正常的,先创建一个公共的方法文件,就可以在项目的任何地方使用,所以后端返回文件流,前端下载报没有token是因为前端没有对乱码进行转译。Token,英语单词,名词、形容词,作名词时意为“(用以启动某些机器或用作支付方式的)代币,辅币;代价券;礼券;标志。
FileOutputStream很明显你是用的文件流返回的
//以byte流的方式打开文件d:\1gif
FileInputStreamhFile=newFileInputStream(url); //得到文件大小
inti=hFileavailable();
bytedata[]=newbyte[i]; //读数据
hFileread(data); //得到向客户端输出二进制数据的对象
OutputStreamtoClient=responsegetOutputStream(); //输出数据
toClientwrite(data);
toClientflush();
toClientclose();
hFileclose();
扩展资料:
如果是纯文本使用字符流,如果二进制文件,使用字节流。
如果只是得到信息,原样不动,不进行修改 *** 作,例如文件上传和下载,这时就使用字节流。文件上传:在服务器端把浏览器端信息提取出来。文件下载:把服务器端内容写给浏览器端。
如果要 *** 作的是自定义信息,这时使用字符流。
通过response获取的输出流它的真实类型是什么?
ServletOutputStream responsegetOutputStream();
PrintWriter responsegetWriter();
ServletOutputStream由于使用字节流多数是原样复制,所以使用write方法,而不是print方法。
PrintWriter:打印流,两个特点:1可以设置自动刷新。2可以将信息原样输出。
1、接收前端上传的文件
/
接收多文件
/
@RequestMapping("/upload")
public R uploadFile(@RequestParam Map<String, Object> params, >
// 复杂类型的request对象
Multipart>
// 获取文件名集合放入迭代器
Iterator<String> files = mRequestgetFileNames();
while (fileshasNext()) {
// 获取上传文件的对象
MultipartFile mFile = mRequestgetFile(filesnext());
if (mFile != null) {
//原始文件名称
String oldfile = mFilegetOriginalFilename();
//文件后缀
String suffix = oldfilesubstring(oldfileindexOf(''), oldfilelength());
String suffix2 = oldfilesubstring(oldfileindexOf('')+1, oldfilelength());
/文件处理/
}
}
}
2接收前端上传的文件
/
接收附件
@param request
@return
/
@ResponseBody
@RequestMapping(value="fileupload",method=RequestMethodPOST)
public void springUpload(>
//将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
requestgetSession()getServletContext());
//检查form中是否有enctype="multipart/form-data"
if(multipartResolverisMultipart(request)) {
//将request变成多部分request
Multipart>
//获取multiRequest 中所有的文件名
Iterator iter=multiRequestgetFileNames();
while(iterhasNext()){
//一次遍历所有文件
MultipartFile file=multiRequestgetFile(iternext()toString());
//最初上传文件名的文件名
String oldFilename = filegetOriginalFilename();
//获取初始文件名后缀
String fileSuffix = oldFilenamesubstring(oldFilenamelastIndexOf("") +1);
/文件处理/
}
}
3接收前端上传的文件
/
接收文件
@param model
@return
@throws IOException
@throws IllegalStateException
/
@RequestMapping(value = "imageupload")
public void imageUpload(MultipartFile file) throws IllegalStateException, IOException {
//文件名称
String realFileName = filegetOriginalFilename();
//文件后缀
String suffix = realFileNamesubstring(realFileNamelastIndexOf("") + 1);
/文件处理/
}
将pdf流生成pdf文件,然后在将pdf文件使用PDFjs进行查看。
你需要考虑浏览器兼容性,低版本浏览器可能没办法支持。
参照 File API 和URL API(URLcreateObjectURL())
以上就是关于后台返回音频为文件流全部的内容,包括:后台返回音频为文件流、有没有什么办法再前台js/jQuery中将img地址转换为文件流、js要怎么接收后端传的excel文件流等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)