精华内容
下载资源
问答
  • 前端-将二进制文件流下载并保存到本地
    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 实现图片转二进制流及二进制转字符串,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • C#图片转换成二进制流并且保存sql server数据库.pdf
  • 我把 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的原创文章,尽在:“汪子熙”:

    展开全文
  • C#上传文件以二进制流的形式上传服务器,并从服务器下载二进制流文件到本地
  • 思路:生成微信小程序码的时候,微信服务器返回的是图片二进制数据,因此我们现在服务端将二进制流转换为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 })
    }
    
    
    展开全文
  • 本地文件下载 @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;
        }
    
    展开全文
  • ueditor修改版,上传图片直接保存想要的位置,不再是项目中,添加图文内容直接转为二进制存储数据库方法,直接在页面显示,不需要任何处理。
  • 前端下载二进制流文件 为 excel文件

    千次阅读 2021-04-05 11:12:42
    需求: 前端请求后端接口,后端返回二进制流,前端需实现浏览器自动下载成excel文件。 原理: 通过a标签的href属性将二进制数据转换为文件,再通过download属性将文件下载到本地。 注意: 接口响应的数据类型要设置...
  • out.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:38
    JAVA二进制流转PDF 1 http接口接收到二进制流,如下,转换成Pdf文件保存到本地 %PDF-1.4 %���� 3 0 obj ...
  • 文件转换为二进制流

    热门讨论 2013-02-19 16:06:26
    文本字符串与byte[], 整个物理文件与byte[], 物理文件内容与byte[], stream与byty[] 之间的相互转换。 从磁盘读取文件,将文件写入磁盘。
  • 转自 :...原理:通过a标签来下载文件 代码实现 function download() { var url = 'download/?filename=aaa.txt'; var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // 也可以...
  • 文件就存在后端服务器上(通常是临时根据前端参数动态生成,用完就删除),后端读取文件后向前端返回文件的二进制流。下面以下载excel文件为例,分别模拟展示这两种情况。(前置准备:vscode,node8+,vue-cli3.5+)。一...
  • 主要介绍了java读取图片并转化为二进制字符串的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 将数据库中以二进制流的形式存储的图片,通过程序还原成图片保存在本地
  • HTTP 请求工具类(含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- ...
  • using System.Linq; using System.Text; using System.Threading....使用File存储到本地 把图片转换为字节形式存储 if语句进行判断如果传输完毕输出 else未传输完毕继续传输 最后关闭 读取也大同小异
  • public 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)...
  • 这个是最简单的图片转化为二进制,再将二进制转化为图片 public static void main(String[] args) { //图片转化为二进制 byte[] imageBytes = null; try (FileInputStream fileInputStream = new ...
  • 本地图片上传前预览(转64位) html部分 <!-- 预览的图 --> <img :src="preview" class="preview" crossorigin="anonymous" v-if="preview" alt="" /> <input @change="imageUploadClick" type=...
  • 本文主要介绍如何处理后台下载接口返回的二进制流数据,解析二进制流数据下载到本地
  • public void imgUpload(HttpServletRequest request, ...主要是用的MultipartFile组件,需要在spring-mvc配置这个组件 image.getBytes()获取图片二进制流,放一个byte数组里面 地址路径根据自己的需求自己配置
  • js处理后端给返回的二进制文件下载到本地 // 下载文件 export const stream2xlsx = (blobStream,name) => { // console.log(‘blobStream—’, blobStream); const blob = new Blob([blobStream], {type: ...
  • PHP接收二进制流文件并保存

    千次阅读 2020-05-16 12:00:05
    PHP通过二进制流判断文件类型 去看看 二、实现 1、通过postman工具发送请求 请求方式:get,post,put,patch,delete,options…这些都可以(注意get有传输大小限制) 2、框架TP 就这一句用到了TP的方法,改成你框架的...
  • 背景:需要通过web 浏览器,使用javascript脚本,通过apache 模块,直接与后台的c/c++ 服务器进行二进制流通信。web浏览器需要处理int,uint32,uint8,int8,float,double,uint64,int64等数据类型。1.涉及两个...
  • 一、图片互转二进制流 1、图片转二进制流; 这里传参的是本地的图片地址,后面会有删除本地图片的教程;作者没试过获取网页地址中的图片,大家可以自己尝试一下! 代码如下: /** * 图片转换为二进制流 ...
  • 前言前段时间使用Python...注:教程中以下四个名词同义:二进制流、二进制数组、字节流、字节数组快速上手在struct模块中,将一个整型数字、浮点型数字或字符流(字符数组)转换为字节流(字节数组)时,需要使用格式...
  • 把数据库二进制数据形成文件源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 138,608
精华内容 55,443
关键字:

二进制流下载到本地