-
2021-12-06 13:54:36
文件下载
根据请求向后台请求数据根据后台返回的二进制流准换成文件并下载。
例如://分组接口导出 export function groupImport(id) { return request({ url: group.groupImport+id, method: 'get', responseType: 'blob' }) } downloadApiDetailed(this.serviceId).then((res) => { var blob = new Blob([res], { type: 'application/msword,charset=utf-8' }) if (window.navigator.msSaveOrOpenBlob) { // IE navigator.msSaveBlob(blob, this.apiDetail.serviceName + '.doc') } else { const ele = document.createElement('a') ele.setAttribute('href', URL.createObjectURL(blob)) //设置下载文件的url地址 ele.setAttribute('download', this.apiDetail.serviceName + '.doc') ele.click() URL.revokeObjectURL(ele.href) document.body.removeChild(ele) } })
更多相关内容 -
Android 实现图片转二进制流及二进制转字符串
2020-08-19 11:24:26主要介绍了Android 实现图片转二进制流及二进制转字符串,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
C#图片转换成二进制流并且保存到sql server数据库.pdf
2021-11-23 22:01:55C#图片转换成二进制流并且保存到sql server数据库.pdf -
如何正确地把服务器端返回的文件二进制流写入到本地保存成文件
2021-09-10 11:23:18我把 url 输入到浏览器里,手动下载视频文件后,文件大小为 70 多 KB: 然而使用 Node.js 代码请求文件数据并保存到本地,发现文件尺寸变成 100 多 KB 了,显然不正确: 经过研究发现,需要使用 request 在发起...我使用 Node.js 的 request 工具库,请求服务器端的视频文件,保存到本地之后,发现了问题。
我把 url 输入到浏览器里,手动下载视频文件后,文件大小为 70 多 KB:
然而使用 Node.js 代码请求文件数据并保存到本地,发现文件尺寸变成 100 多 KB 了,显然不正确:
经过研究发现,需要使用 request 在发起数据请求之前,添加如下一行语句:
request.defaults({ encoding: null });
完整的数据请求的代码:
var requestC = request.defaults({ encoding: null }); console.log("get video via url: " + url ); const fileName = getVideoPartNameByUrl(url); requestC(getVideoOptions,function(error,response,body){ if(error){ console.log("error occurred: " + error); reject(error); } resolve({ fileName: fileName, fileContent: body }); });
文件写入的代码:
fs.writeFile(oVideo.fileName, oVideo.fileContent, "binary", function (error) { if(error) console.log("file writes error"); else{ console.log("File: ", oVideo.fileName, " writes ok"); } });
之后问题消失。
更多Jerry的原创文章,尽在:“汪子熙”:
-
上传下载二进制流文件
2013-01-04 09:15:56C#上传文件以二进制流的形式上传到服务器,并从服务器下载二进制流文件到本地 -
vue.js+php 实现二进制流图片数据下载到本地
2020-09-03 08:56:40思路:生成微信小程序码的时候,微信服务器返回的是图片二进制数据流,因此我们现在服务端将二进制流转换为base64进制数据流,然后返回给前端。前端将请求到的base64进制流转换进行下载。 这样可以有效避免需要通过...思路:生成微信小程序码的时候,微信服务器返回的是图片二进制数据流,因此我们现在服务端将二进制流转换为base64进制数据流,然后返回给前端。前端将请求到的base64进制流转换进行下载。
这样可以有效避免需要通过访问图片url造成的跨域等等的一些列问题。后端代码
这里以微信小程序码为例。其中$binary是二进制数据,$base64String为64位数据信息,其余代码根据自己需求书写
/** * 生成学校小程序码的base64位数据流 * @return \sf\ViewModel\JsonModel */ public function schcodeAction() { $wx = new WeiXin(true); $scene = POST::Int('sch_id'); // 参数获取,自己根据自己的写 $wxAppPage = SchoolInfo::$shareCodePage; // 自己根据自己的写 $binary = $wx->getAppShareQR($scene, $wxAppPage); // 请求微信服务器返回的二进制流数据,请求接口自己写 $base64String = 'data:' . getimagesizefromstring($binary)['mime'] . ';base64,' . chunk_split(base64_encode($binary)); // 关键::此处为二进制流转换为base64位 return $this->GetFailJSONModel(['info'=>$base64String]); // 数据返回,自己写 }
前端代码
html在这里就不进行书写了,理解万岁,点击事件触发download(),然后 this.codeData是请求回来的图片数据流
// 下载图片 download() { downloadFile(this.detailInfo.sch_name ? this.detailInfo.sch_name : '二维码', this.codeData) }
以下为封装代码,可以放在工具文件中,然后进行引入使用
/** * base64图片下载 * @param {*} fileName 下载后的文件名称 * @param {*} content 内容 */ export const downloadFile = (fileName, content) => { const aLink = document.createElement('a') const blob = base64ToBlob(content) // new Blob([content]); const evt = document.createEvent('HTMLEvents') evt.initEvent('click', true, true)// initEvent 不加后两个参数在FF下会报错 事件类型,是否冒泡,是否阻止浏览器的默认行为 aLink.download = fileName aLink.href = URL.createObjectURL(blob) aLink.click() } /** * base64转blob * @param {*} code base64位码 */ const base64ToBlob = (code) => { const parts = code.split(';base64,') const contentType = parts[0].split(':')[1] const raw = window.atob(parts[1]) const rawLength = raw.length const uInt8Array = new Uint8Array(rawLength) for (let i = 0; i < rawLength; ++i) { uInt8Array[i] = raw.charCodeAt(i) } return new Blob([uInt8Array], { type: contentType }) }
-
java 二进制数据下载、本地文件下载、各种浏览器下载名称乱码解决
2021-08-10 11:23:55本地文件下载 @SuppressWarnings("finally") public static boolean download(String filePath, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException { String ...本地文件下载
@SuppressWarnings("finally") public static boolean download(String filePath, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException { String encodeName = getFileName(request, fileName); response.setContentType("application/force-download"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + encodeName); File tempFile = new File(filePath); InputStream bis = null; OutputStream bos = null; response.setHeader("Content-Length", ""+tempFile.length()); try { bis = new BufferedInputStream(new FileInputStream(tempFile)); bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[1024]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } } catch (IOException e) { log.warn(e.getMessage(),e); } finally { if (bis != null) { bis.close(); } if (bos != null) { bos.close(); } return true; } }
二进制数据下载
@SuppressWarnings("finally") public static boolean download(byte[] bytes, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException { OutputStream bos = null; try { String encodeName = fileName; response.setHeader("Content-disposition", "attachment;filename=" + encodeName); response.setContentType("application/force-download"); response.setCharacterEncoding("UTF-8"); bos = new BufferedOutputStream(response.getOutputStream()); bos.write(bytes); bos.flush(); } finally { if (bos != null) { bos.close(); } return true; } }
/** * 解决各个浏览器文件下载中文乱码问题 * * @param filename * @return */ public static String getFileName(HttpServletRequest request, String filename) { String userAgent = request.getHeader("User-Agent"); String oraFileName = filename; String formFileName = oraFileName; // 针对IE或者以IE为内核的浏览器: if (userAgent.contains("MSIE") || userAgent.contains("Trident") || userAgent.contains("Edge")) { try { formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } else { // 非IE浏览器的处理: try { formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1"); } catch (UnsupportedEncodingException e) { log.warn(e.getMessage(),e); } } return formFileName; }
-
富文本编辑器上传到本地可以转二进制存数据库.rar
2020-06-11 10:14:55ueditor修改版,上传图片直接保存到想要的位置,不再是项目中,添加图文内容直接转为二进制存储数据库方法,直接在页面显示,不需要任何处理。 -
前端下载二进制流文件 为 excel文件
2021-04-05 11:12:42需求: 前端请求后端接口,后端返回二进制流,前端需实现浏览器自动下载成excel文件。 原理: 通过a标签的href属性将二进制数据转换为文件,再通过download属性将文件下载到本地。 注意: 接口响应的数据类型要设置... -
前端接受后端返回的二进制文件流生成文件下载到本地
2022-03-18 11:54:55out.write("第二8888".getBytes(StandardCharsets.UTF_8)); out.close(); fos.close(); BufferedInputStream br = new BufferedInputStream(new FileInputStream(file)); OutputStream os = response.... -
二进制流转PDF
2019-03-14 15:56:38JAVA二进制流转PDF 1 http接口接收到二进制流,如下,转换成Pdf文件保存到本地 %PDF-1.4 %���� 3 0 obj ... -
文件转换为二进制流
2013-02-19 16:06:26文本字符串与byte[], 整个物理文件与byte[], 物理文件内容与byte[], stream与byty[] 之间的相互转换。 从磁盘读取文件,将文件写入磁盘。 -
ajax请求二进制流下载文件
2019-05-04 19:34:50转自 :...原理:通过a标签来下载文件 代码实现 function download() { var url = 'download/?filename=aaa.txt'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以... -
前端下载普通文件与二进制流文件
2020-12-19 18:47:44文件就存在后端服务器上(通常是临时根据前端参数动态生成,用完就删除),后端读取文件后向前端返回文件的二进制流。下面以下载excel文件为例,分别模拟展示这两种情况。(前置准备:vscode,node8+,vue-cli3.5+)。一... -
java读取图片并转化为二进制字符串的实现方法
2020-08-26 23:40:00主要介绍了java读取图片并转化为二进制字符串的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 -
实现数据库二进制流转换成图片保存本地
2015-09-16 16:21:37将数据库中以二进制流的形式存储的图片,通过程序还原成图片保存在本地 -
HTTP 请求工具类(含HTTPS)(参数、二进制流、文件、图片)
2015-07-03 16:50:29HTTP 请求工具类(含HTTPS)(参数、二进制流、文件、图片) -
php读取二进制流
2021-03-22 20:18:18将php数据转换为二进制数据string pack ( string $format [, mixed $args [, mixed $...]] )将二进制数据转换为php数据array unpack ( string $format, string $data )$format:a – NUL-padded stringa – NUL- ... -
C#将图片以二进制格式存储到本地/读取本地二进制格式的图片
2019-04-25 20:14:25using System.Linq; using System.Text; using System.Threading....使用File流存储到本地 把图片转换为字节形式存储 if语句进行判断如果传输完毕输出 else未传输完毕继续传输 最后关闭流 读取也大同小异 -
二进制流上传文件到服务器(部分)
2021-08-12 05:21:38public void Up(){UploadFile("jing",@"D:\11.xls");}public ActionResult UploadFile(string userID, string path){Byte[] MeaningFile;FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read)... -
Java将本地图片转为二进制流,将二进制流转化为图片
2020-01-31 02:09:44这个是最简单的图片转化为二进制,再将二进制转化为图片 public static void main(String[] args) { //图片转化为二进制 byte[] imageBytes = null; try (FileInputStream fileInputStream = new ... -
本地图片上传前预览(转64位),64位图片转成二进制流
2022-02-11 09:37:07本地图片上传前预览(转64位) html部分 <!-- 预览的图 --> <img :src="preview" class="preview" crossorigin="anonymous" v-if="preview" alt="" /> <input @change="imageUploadClick" type=... -
前端处理后台传过来的二进制流进行下载,并处理乱码
2021-12-27 14:47:29本文主要介绍如何处理后台下载接口返回的二进制流数据,解析二进制流数据下载到本地。 -
java后台接收二进制流图片保存本地服务器
2017-12-28 17:06:20public void imgUpload(HttpServletRequest request, ...主要是用的MultipartFile组件,需要在spring-mvc配置这个组件 image.getBytes()获取图片二进制流,放到一个byte数组里面 地址路径根据自己的需求自己配置 -
js处理后端给返回的二进制文件流,下载到本地
2019-09-18 14:33:38js处理后端给返回的二进制文件流,下载到本地 // 下载文件 export const stream2xlsx = (blobStream,name) => { // console.log(‘blobStream—’, blobStream); const blob = new Blob([blobStream], {type: ... -
PHP接收二进制流文件并保存
2020-05-16 12:00:05PHP通过二进制流判断文件类型 去看看 二、实现 1、通过postman工具发送请求 请求方式:get,post,put,patch,delete,options…这些都可以(注意get有传输大小限制) 2、框架TP 就这一句用到了TP的方法,改成你框架的... -
javascript 读取二进制流(1)
2021-06-14 02:38:03背景:需要通过web 浏览器,使用javascript脚本,通过apache 模块,直接与后台的c/c++ 服务器进行二进制流通信。web浏览器需要处理int,uint32,uint8,int8,float,double,uint64,int64等数据类型。1.涉及两个... -
Java处理图片-图片互转二进制流-保存网页中的图片到本地-删除本地文件-图片接口-详解过程中的问题
2022-02-14 13:14:37一、图片互转二进制流 1、图片转二进制流; 这里传参的是本地的图片地址,后面会有删除本地图片的教程;作者没试过获取网页地址中的图片,大家可以自己尝试一下! 代码如下: /** * 图片转换为二进制流 ... -
Python中对字节流/二进制流的操作:struct模块简易使用教程
2020-12-03 18:40:33前言前段时间使用Python...注:教程中以下四个名词同义:二进制流、二进制数组、字节流、字节数组快速上手在struct模块中,将一个整型数字、浮点型数字或字符流(字符数组)转换为字节流(字节数组)时,需要使用格式... -
把数据库二进制数据形成文件
2016-08-17 15:15:24把数据库二进制数据形成文件源码
收藏数
138,608
精华内容
55,443