精华内容
下载资源
问答
  • 思路:生成微信小程序码的时候,微信服务器返回的是图片二进制数据,因此我们现在服务端将二进制流转换为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 })
    }
    
    
    展开全文
  • C#上传文件以二进制流的形式上传到服务器,并从服务器下载二进制流文件到本地
  • js处理后端给返回的二进制文件下载到本地 // 下载文件 export const stream2xlsx = (blobStream,name) => { // console.log(‘blobStream—’, blobStream); const blob = new Blob([blobStream], {type: ...

    js处理后端给返回的二进制文件流,下载到本地

    // 下载文件
    export const stream2xlsx = (blobStream,name) => {
    // console.log(‘blobStream—’, blobStream);
    const blob = new Blob([blobStream], {type: ‘application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8’});
    const fileName = name?name+${moment().format('YYYY-MM-DD HH:mm:ss')}.xlsx:${moment().format('YYYY-MM-DD HH:mm:ss')}.xlsx
    if (‘download’ in document.createElement(‘a’)) { // 非IE下载
    const elink = document.createElement(‘a’)
    elink.download = fileName
    elink.style.display = ‘none’
    elink.href = URL.createObjectURL(blob)
    document.body.appendChild(elink)
    elink.click()
    URL.revokeObjectURL(elink.href) // 释放URL 对象
    document.body.removeChild(elink)
    } else { // IE10+下载
    navigator.msSaveBlob(blob, fileName)
    }
    }

    展开全文
  • 刚入行的菜鸟一枚,最近遇到一个问题...将二进制流到本地的文件夹中。然后从本地将图片导进Word中。 那么来看下我这种比较笨的解决方法。 Java代码: jar包:base64-2.3.8.jar (自己可以下载) Blob blob=n
    刚入行的菜鸟一枚,最近遇到一个问题就是将数据库中存储的照片写到生成的Word文档中。查阅了很多资料最终解决了这个问题。
    我用的方法是在数据库中获取到存储的图片的二进制。将二进制流写到本地的文件夹中。然后从本地将图片导进Word中。
    那么来看下我这种比较笨的解决方法。

    Java代码:
    jar包:base64-2.3.8.jar (自己可以下载)
    	Blob blob=null;
    	BufferedInputStream is=null;
    	byte[] b=null;
    	try{
    	//我的是直接在数据库中查询出的存储在数据库中的图片的二进制
    	//也可以用其他方法获取图片的二进制,例子也比较多
    		rs=ps.executeQuery(sql);
    		if(rs.next()){
    	    	blob=rs.getBlob(1);//获取图片的二进制
    		}
    		is=new BufferedInputStream(blob.getBinaryStream());
    		b=new byte[(int)blob.length]
    		int len=b.length;
    		int offset=0;
    		int read=0;
    		while(offset < len && (read=is.read(b,offset,len-offset))>=0){
    		    offset+=read;
    		}
    	}
         BASE64Decoder decoder = new sun.misc.BASE64Decoder();
         BASE64Encoder encoder = new sun.misc.BASE64Encoder();
         try {
            String content = encoder.encodeBuffer(b).trim();
            byte[] bs = decoder.decodeBuffer(content);
            for (int ii = 0; ii < bs.length; ii++) {
               if (bs[ii] < 0) {
                  //调整异常数据
                  bs[ii] += 256;
               }
            }
            //生成jpeg图片
            String path = "D:\\Image\\a.jpg";// D:\Image这个路径可以自己指定。 a.jpg相当于一个模板(自认为)
            OutputStream outs = new FileOutputStream(path);
            outs.write(bs);
            outs.flush();
            outs.close();
            System.out.println("新图片已生成!");
    		
    	第一次写东西,希望会有所帮助。写的不好请多多包涵!!
    
    

    展开全文
  • 我需要命中一个POST端点并将响应(二进制数据)保存为zip文件并下载到本地目录。我已经设法到达POST端点并检索二进制数据,但是我很难将其转换或保存为zip文件。在download_contract函数是我用来到达端点的POST,...

    我需要命中一个POST端点并将响应(二进制数据)保存为zip文件并下载到本地目录。我已经设法到达POST端点并检索二进制数据,但是我很难将其转换或保存为zip文件。在

    download_contract函数是我用来到达端点的POST,contract是我正在解析的JSON:def post(cls, url, access_token, obj=None):

    return WebResponse.from_requests(requests.post(url, data=None if obj is None else obj.json(), headers=cls.secure_header(access_token) if obj is None else cls.secure_json_header(access_token)))

    def download_contract(self, contract):

    return SecureWebRequest.post(self.CONTRACT_EXPORT_URL, obj=contract, access_token=self.access_token)

    下面的代码是关于我访问端点并检索它的响应并尝试将其保存为zip文件的。在

    ^{pr2}$

    打印时返回什么(上下文.响应)具体如下:WebResponse(200,m_-Jinstrument.xmlmPÍ Â0

    žď)B_ÖQ1CđŕYń8ĘIkGßޡ)Ă\ň}|?FłČeqÁťť×=Lť&sRÁĐxÜăcŇĽHżÁ:Źů9

    üż7OĚhtÓé`Ä#CŤ3>ÚŇŞV­hŕşwZÂč8yłś 32Wű\ep

    WebResponse是(status_code,result),其中status_code对应于HTTP状态码200,result是端点返回的原始数据。在class WebResponse():

    STATUS_OK = 200

    STATUS_CREATED = 201

    STATUS_ACCEPTED = 202

    STATUS_NOCONTENT = 204

    STATUS_BADREQUEST = 400

    STATUS_UNAUTHORIZED = 401

    STATUS_FORBIDDEN = 403

    STATUS_NOTFOUND = 404

    STATUS_CONFLICT = 409

    STATUS_INVALID = 422

    STATUS_INTERNALSERVER_ERROR = 500

    def __init__(self, r, result=None):

    self.status_code = r.status_code

    self.text = r.text

    self.headers = r.headers

    self.result = r.text if result is None else result

    def __repr__(self):

    return 'WebResponse(%s, %s)' % (self.status_code, self.result)

    错误回缩:Traceback (most recent call last): File

    "/Users/ss/anaconda/envs/autoimport-server/lib/python3.4/site-packages/behave/model.py",

    line 1456, in run

    match.run(runner.context) File "/Users/ss/anaconda/envs/autoimport-server/lib/python3.4/site-packages/behave/model.py",

    line 1903, in run

    self.func(context, *args, **kwargs) File "features/steps/miu_connector_steps.py", line 255, in step_impl

    with context.services.autoimport.download_contract(DownloadContract(context.program_id,

    complete_filename(context.filename))) as response, open(file_name,

    'wb') as out_file: AttributeError: exit

    展开全文
  • 需求: 前端请求后端接口,后端返回二进制流,前端需实现浏览器自动下载成excel文件。 原理: 通过a标签的href属性将二进制数据转换为文件,再通过download属性将文件下载到本地。 注意: 接口响应的数据类型要设置...
  • 二进制流文件实现Blob下载

    万次阅读 2018-02-14 10:30:56
    最近公司项目中,有对文件的导出(下载)的功能,当然普通的下载方式,比如访问一个后台...于是,经过考虑,通过ajax方式请求后台的二进制流文件,采用Blob对象的方式保存在本地,这样文件的名称,后缀规则均可...
  • 我们主要是把后端接口获取的pdf二进制流下载保存微信的本地用户文件,下载后预览再删掉,因为本地用户文件每个用户只有200M,所以预览后删掉。 二、小程序实现文件预览 代码如下(示例): //使用登记牌扫码...
  • 文件上传部分1.文件的上传常规的文件上传...但很多时候我们并不需要用到那么多复杂功能,所以文件上传的本质应该只有两步:(1)将本地文件上传浏览器端(2)将浏览器端的文件发送对应api接口其他的额外操作可以由自己...
  • 需求是下载图片并保存到本地,可是小程序请求后端接口下载文件,返回的是二进制流文件。如何处理!不多说,直接上代码 wx.request({ url: '接口地址', method: 'get', header: { "token": '后端接口需要的token'...
  • 声明:根据http请求图片的url下载文件到本地 public void downLoadPhoto(String photoUrl)throws Exception{ ... //获取照片返回二进制流 RestTemplate restTemplate = new RestTemplate(); HttpHe...
  • 用axio正常发送请求下载excel会出现以下问题,即将级制文件下载到本地,下附解决办法: importData(){ let that=this; this.$http.post(this.dataUrl+'/statistics/data/downOperationReportForms',{ //...
  • 目前公司没有使用云服务器,为了避免下载到本地再删除的操作,使用二进制流进行导出。但是在使用的过程总遇到了问题,查阅资料后发现 jquery中的ajax请求,不支持二进制流。datatype格式如下: (参考地址:...
  • 对象存储用的是minio,所以是先到minio中取文件,然后读取,存在本地指定目录,然后再通过迭代器读取的方式去读取文件返回给前端(怕一次性读取太多造成服务器卡死) 直接上代码: import zipfile def file_...
  • 一、获取本地音频文件,进行解析成二进制数据音频二、将音频流转化成byte[]数组,按指定大小字节数进行分包三、将音频分成若干个包,以List列表形式缓存redis数据库中四、从redis数据库中获取数据,转换成音频...
  • 一、获取本地音频文件,进行解析成二进制数据音频 二、将音频流转化成byte[]数组,按指定大小字节数进行分包 三、将音频分成若干个包,以List列表形式缓存redis数据库中 四、从redis数据库中获取数据,转换成...
  • 一、获取本地音频文件,进行解析成二进制数据音频 二、将音频流转化成byte[]数组,按指定大小字节数进行分包 三、将音频分成若干个包,以List列表形式缓存redis数据库中 四、从redis数据库中获取数据,转换成...
  • 在HTML5中,download是 a 标签的新增属性,download属性能让我们指定浏览器下载...一、直接用文件的地址将文件下载到本地 handleDownload(url) { // 直接在浏览器预览 (同源就会直接下载) var a = document.create
  • 下载axios配置 function downloadPolicy(data) { return request({ url: '/api/invo/goods/downloadPolicy', method: 'post', ...数据转换为excel文件并下载到本地 downloadPolicy(data).then(res =
  • 参考: 1.HTML5 File API 介绍 2. MDN - Blob API 3.二进制 转载于:https://www.cnblogs.com/xiaochengzi/p/10407185.html
  • 而对于二进制流数据,比如图片,pdf等数据,我不太了解。今天把我项目中用到的perl代码列出来,供大家参考。该项目任务是这样的,需求如下:(1)从html中解析出下载地址,这个地址有很多个,从1-400不等。(2)下载...
  • 以前发过一个东西,是将远程的内容,按浏览器输入后,将它转为二进制流下载到本地,但局限性比较多,这个代码可以将远程页面的所有内容,包括远程服务器的CSS,JS,JPG,Gif,第一层下面的页面,swf,等等... 代码的使用: 将...
  • 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将一台服务器的文件、图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 #...
  • axios下载Excel到本地

    2020-06-28 14:25:46
    后台服务接口返回的Excel为二进制流,如下图所示: 前台页面利用 axios下载Excel,处理方式如下代码所示: //查询条件 formInline: { saleName: "", doctorName: "", goodsName: "", startDate: "", endDate...
  • vue下载表格到本地

    2020-03-18 15:17:24
    下载文件我们常用的方式有之间跳转页面下载,二进制文件流下载,今天总结一下使用“xlsx”插件下载(快捷方便,操作简单,不需要请求后台) 安装相关依赖 npm install --save xlsx file-saver 组件里头引入 ...
  • 这是从 xdisp_virt项目剥离出来的, 实现 实时的 H264 + AAC 编码 音频和视频的 ...bin目录是已经编译好的二进制文件. 有兴趣可查看BLOG: https://blog.csdn.net/fanxiushu/article/details/80996391
  • 项目中要实现本地下载pdf文件,ajax请求获取文件全路径,如上,a标签href属性...采用原生ajax获取二进制文件//读取修改接口文件下载function download() {var url ='downLoadFilesPath?path='+addrLast;var xhr...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 192
精华内容 76
关键字:

二进制流下载到本地