后台返回音频为文件流

后台返回音频为文件流,第1张

后台返回音频为文件流可以通过转化为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文件流等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10626497.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存