精华内容
下载资源
问答
  • Base64编码文件二进制流是使用base64_encode函数对文件二进制信息进行编码。 官方说明 base64_encode — 使用 MIME base64 对数据进行编码 Report a bug 说明 string base64_encode ( str...
    本文章来给各位同学介绍一篇关于php Base64编码文件二进制流主要使用在哪里,有举的朋友可参考一下,只简单的讲述了一下。

    Base64编码文件二进制流是使用base64_encode函数对文件二进制信息进行编码。

    官方说明

    base64_encode — 使用 MIME base64 对数据进行编码

    Report a bug 说明

    string base64_encode ( string $data )
    使用 base64 对 data 进行编码。

    设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。

    Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

    具体方式为:

    <table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> 
    <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td>
    <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" οnclick="doCopy('copy8940')">复制代码</td>
    </tr> <tr>
    <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy8940>
    </td> </tr> </table>

    $path = 'image.jpg';
    $fp = fopen($path, 'rb');  // 以二进制形式打开文件
    $content = fread($fp, filesize($path)); // 读取文件内容
    fclose($fp);
    $content = base64_encode($content); // 将二进制信息编码成字符串

    // echo $content;

    上述程序输出的结果类似:R0lGODlhEAAQAJECAISEhAAAhP///wAAACH5BAEAAAIALAAAAAAQABAAAAImlI
    pyxedQADQhVflpfAK30jG1lwmqIgWl6CClmKHxn6mdVb6zhcAOw==

    
    

    这样我们成功将一个文件转换成了字符串。

    解码过程非常简单,使用base64_decode($content)即可。

    上述处理过程主要用途有:

    1、接口传输

    主要适用于通过WEB接口将文件从一个站点向另一个站点传输,可以用于XML信息。

    2、存入数据库

    当然,将图片等文件信息保存到数据库中完全可以不用这么做,但这种方式依然适用。对于数据库新手来说这种方式更可接受。因为这完全是一个字符串。

    3、文件加密

    文件加密可大家用得比较少,举个例子,假如我们有一套PHP程序需要保护,必须有授权码的用户才能正常运行,那么我们可能使用授权码来对文件进行加密,即将上述编码后的字符串再次加工。运行过程需要授权码才可运行。

    当然还有其它用途,根据各人的需要灵活使用。

    64编码转二进制函数:
    function base64_to_blob($base64Str){ if($index = strpos($base64Str,'base64,',0)){ $blobStr = substr($base64Str,$index+7); $typestr = substr($base64Str,0,$index); preg_match("/^data:(.*);$/",$typestr,$arr); return ['blob'=>base64_decode($blobStr),'type'=>$arr[1]]; } return false; } $data = base64_to_blob($base64Str); header('Location: '.$data['type']); echo $data['blob'];

    转载于:https://www.cnblogs.com/tkzc2013/p/9608325.html

    展开全文
  • DES加密文件二进制流

    2009-02-04 16:28:09
    des对文件加密,生成.tdes文件、解密后生成解密文件。本方法是纯利用二进制流文件的加解密、
  • 声明:根据http请求图片的url下载文件到本地 public void downLoadPhoto(String photoUrl)throws Exception{ ... //获取照片返回二进制流 RestTemplate restTemplate = new RestTemplate(); HttpHe...

    声明:根据http请求图片的url下载文件到本地

     

    public void  downLoadPhoto(String photoUrl)throws Exception{
             
            //获取照片返回二进制流
                RestTemplate restTemplate = new RestTemplate();
                HttpHeaders headers = new HttpHeaders();
                ResponseEntity<byte[]> entity = restTemplate.exchange(photoUrl, HttpMethod.GET,new HttpEntity<>(headers), byte[].class);
                byte[] body = entity.getBody();
                InputStream sbs = new ByteArrayInputStream(body);
    
                File dest = new File("/Users/qixin/Desktop/a.jpg");
                if(!dest.exists()) {
                    dest.createNewFile();
                }
    
                InputStream in = null;
                OutputStream out = null;
    
                in = new ByteArrayInputStream(body);
                out = new FileOutputStream(dest);
    
                byte []bt = new byte[1024];
                int length=0;
                while(	(length = in.read(bt)) !=-1) {
                    //一次性写入文件a中
                    out.write(bt,0,length);
                }
    
                if(null!=out) {
                    out.close();
                }
    
    
    
     }

     

    展开全文
  • springmvc文件二进制流下载

    千次阅读 2018-07-07 08:44:31
    BufferedInputStream inputStream = null; BufferedOutputStream bos = null; try { String fileId = url.replaceAll(nginxpath,... //输出 String suffix = url.substring(url.lastIndexOf("."), url...
    BufferedInputStream inputStream = null;
    BufferedOutputStream bos = null;
    try {
        String fileId = url.replaceAll(nginxpath, "");
        //输出流
        String suffix = url.substring(url.lastIndexOf("."), url.length());
        //new Date().getTime();
        inputStream = new BufferedInputStream(FastDFSClient.downloadFile(fileId));
    
        //response.setCharacterEncoding("utf-8");
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment;filename=" + System.currentTimeMillis() + suffix);
        int bytesRead = 0;
        bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buffer = new byte[1024];
        //开始向网络传输文件流
        while ((bytesRead = inputStream.read(buffer, 0, 1024)) != -1) {
            bos.write(buffer, 0, bytesRead);
        }
        bos.flush();
        inputStream.close();
        bos.close();
    } catch (IOException e) {
        logger.error("下载文件出现错误,错误信息是:", e.getMessage());
    } finally {
        //关闭流
        if (bos != null) {
            try {
                bos.close();
            } catch (IOException e) {
                logger.error("关闭输入流失败," + e.getMessage());
                e.printStackTrace();
            }
        }
        if (bos != null) {
            try {
                bos.close();
            } catch (IOException e) {
                logger.error("关闭输出流失败," + e.getMessage());
                e.printStackTrace();
            }
        }
    }

     

     

     

    vue+axios文件下载需注意的地方

     

    downloadFile(row){
      if(this.code === '101'){
        return;
      }
      request({
        url: '//',
        method: 'post',
        data: row,
        responseType: 'blob'
      }).then((resp) => {
        console.log(resp);
        const content = resp;
        const fileName = row.attachmentName;
        const blob = new Blob([content])
        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)
        }
      }).catch(e => {
        console.log(e);
      });
    展开全文
  • C++文件二进制流控制

    千次阅读 2012-05-31 19:51:58
    同感:这篇文章是在网上转载的,感觉言简意赅,非常实用. ... 在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。  一、ASCII 输出  为了使用下面的

    转自:http://blog.sina.com.cn/s/blog_49ee032f0100irzs.html

    同感:这篇文章是在网上转载的,感觉言简意赅,非常实用.

     

       文件 I/O在C++中比烤蛋糕简单多了。 在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。

      一、ASCII 输出

      为了使用下面的方法,你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代<fstream.h>,所有的C++标准头文件都是无后缀的。)。这是<iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作.事实上, <iostream.h>已经被<fstream.h>包含了, 所以你不必包含所有这两个文件,如果你想显式包含他们,那随便你。我们从文件操作类的设计开始,我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了!但这篇文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。

      如果你用过标准控制台流"cin"?和 "cout," 那现在的事情对你来说很简单。我们现在开始讲输出部分,首先声明一个类对象。ofstream fout;

      这就可以了,不过你要打开一个文件的话,必须像这样调用ofstream::open()。

    fout.open("output.txt");

      你也可以把文件名作为构造参数来打开一个文件.

    ofstream fout("output.txt");

      这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个,所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。 对不了解控制台输出"cout"的人,这里有个例子。

    int num = 150;
    char name[] = "John Doe";
    fout << "Here is a number: "<< num<< "\n";
    fout << "Now here is a string: "<< name<< "\n";

      现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了,所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。 回写缓冲区会在保持文件打开的情况下保存文件,所以只要有必要就使用它。回写看起来像另一次输出, 然后调用方法关闭。像这样:

    fout << flush; fout.close();

       现在你用文本编辑器打开文件,内容看起来是这样:

      Here is a number: 150 Now here is a string: John Doe

      很简单吧! 现在继续文件输入, 需要一点技巧,所以先确认你已经明白了流操作,对 "<<"和">>" 比较熟悉了, 因为你接下来还要用到他们。继续…

      二、ASCII 输入

      输入和"cin" 流很像. 和刚刚讨论的输出流很像, 但你要考虑几件事情。在我们开始复杂的内容之前, 先看一个文本:

      12 GameDev 15.45 L This is really awesome!

      为了打开这个文件,你必须创建一个in-stream对象,?像这样。

    ifstream fin("input.txt");

      现在读入前四行. 你还记得怎么用"<<"操作符往流里插入变量和符号吧?好,?在 "<<"(插入)?操作符之后,是">>" (提取) 操作符. 使用方法是一样的.看这个代码片段.

    int number;
    float real;
    char letter, word[8];
    fin >> number; fin>> word; fin>> real; fin>> letter;

      也可以把这四行读取文件的代码写为更简单的一行。

    fin >> number>> word>> real>> letter;

      它是如何运作的呢? 文件的每个空白之后, ">>"操作符会停止读取内容, 直到遇到另一个>>操作符.因为我们读取的每一行都被换行符分割开(是空白字符), ">>"操作符只把这一行的内容读入变量。这就是这个代码也能正常工作的原因。但是,可别忘了文件的最后一行。

      This is really awesome!

      如果你想把整行读入一个char数组,我们没办法用">>"?操作符,因为每个单词之间的空格(空白字符)会中止文件的读取。为了验证:

    char sentence[101]; fin >>sentence;

      我们想包含整个句子, "This is really awesome!" 但是因为空白, 现在它只包含了"This". 很明显,肯定有读取整行的方法, 它就是getline()。这就是我们要做的。

    fin.getline(sentence, 100);

      这是函数参数. 第一个参数显然是用来接受的char数组. 第二个参数是在遇到换行符之前,数组允许接受的最大元素数量.现在我们得到了想要的结果:“This is really awesome!”。

      你应该已经知道如何读取和写入ASCII文件了。但我们还不能罢休,因为二进制文件还在等着我们。

      三、二进制 输入输出

      二进制文件会复杂一点,但还是很简单的。首先你要注意我们不再使用插入和提取操作符(译者注:<< 和>> 操作符).你可以这么做,但它不会用二进制方式读写。你必须使用read() 和write() 方法读取和写入二进制文件. 创建一个二进制文件,看下一行。

    ofstream fout("file.dat", ios::binary);

      这会以二进制方式打开文件, 而不是默认的ASCII模式。首先从写入文件开始。函数write() 有两个参数。第一个是指向对象的char类型的指针, 第二个是对象的大小(译者注:字节数)。 为了说明,看例子。

    int number = 30; fout.write((char *)(&number),sizeof(number));

      第一个参数写做"(char *)(&number)". 这是把一个整型变量转为char*指针。如果你不理解,可以立刻翻阅C++的书籍,如果有必要的话。第二个参数写作"sizeof(number)". sizeof()返回对象大小的字节数. 就是这样!

      二进制文件最好的地方是可以在一行把一个结构写入文件。 如果说,你的结构有12个不同的成员。用ASCII?文件,你不得不每次一条的写入所有成员。 但二进制文件替你做好了。 看这个。

    struct OBJECT { int number; char letter; } obj;
    obj.number = 15;
    obj.letter = ‘M’;
    fout.write((char *)(&obj), sizeof(obj));

      这样就写入了整个结构! 接下来是输入. 输入也很简单,因为read()?函数的参数和 write()是完全一样的,使用方法也相同。

    ifstream fin("file.dat", ios::binary); fin.read((char*)(&obj), sizeof(obj));

      我不多解释用法, 因为它和write()是完全相同的。二进制文件比ASCII文件简单, 但有个缺点是无法用文本编辑器编辑。 接着,我解释一下ifstream 和ofstream 对象的其他一些方法作为结束.

      四、更多方法

      我已经解释了ASCII文件和二进制文件, 这里是一些没有提及的底层方法。

      检查文件

      你已经学会了open() 和close() 方法, 不过这里还有其它你可能用到的方法。

      方法good() 返回一个布尔值,表示文件打开是否正确。

      类似的,bad() 返回一个布尔值表示文件打开是否错误。 如果出错,就不要继续进一步的操作了。

      最后一个检查的方法是fail(), 和bad()有点相似, 但没那么严重。

      读文件

      方法get() 每次返回一个字符。

      方法ignore(int,char) 跳过一定数量的某个字符, 但你必须传给它两个参数。第一个是需要跳过的字符数。第二个是一个字符, 当遇到的时候就会停止。 例子,

    fin.ignore(100, ‘\n’);

      会跳过100个字符,或者不足100的时候,跳过所有之前的字符,包括 ‘\n’。

      方法peek() 返回文件中的下一个字符, 但并不实际读取它。所以如果你用peek() 查看下一个字符, 用get()在peek()之后读取,会得到同一个字符, 然后移动文件计数器。

      方法putback(char) 输入字符, 一次一个, 到流中。我没有见到过它的使用,但这个函数确实存在。

      写文件

      只有一个你可能会关注的方法.?那就是 put(char), 它每次向输出流中写入一个字符。

      打开文件

      当我们用这样的语法打开二进制文件:

    ofstream fout("file.dat", ios::binary);

      "ios::binary"是你提供的打开选项的额外标志. 默认的, 文件以ASCII方式打开, 不存在则创建, 存在就覆盖.这里有些额外的标志用来改变选项。

      ios::app 添加到文件尾
      ios::ate 把文件标志放在末尾而非起始。
      ios::trunc 默认. 截断并覆写文件。
      ios::nocreate 文件不存在也不创建。
      ios::noreplace 文件存在则失败。

      文件状态

      我用过的唯一一个状态函数是eof(), 它返回是否标志已经到了文件末尾。 我主要用在循环中。 例如, 这个代码断统计小写‘e’在文件中出现的次数。

    ifstream fin("file.txt");
    char ch; int counter;
    while (!fin.eof()) {
    ch = fin.get();
    if (ch == ‘e’) counter++;
    }
    fin.close();

      我从未用过这里没有提到的其他方法。还有很多方法,但是他们很少被使用。参考C++书籍或者文件流的帮助文档来了解其他的方法。

      结论

      你应该已经掌握了如何使用ASCII文件和二进制文件。有很多方法可以帮你实现输入输出,尽管很少有人使用他们。我知道很多人不熟悉文件I/O操作,我希望这篇文章对你有所帮助。 每个人都应该知道. 文件I/O还有很多显而易见的方法,?例如包含文件<stdio.h>. 我更喜欢用流是因为他们更简单。祝所有读了这篇文章的人好运, 也许以后我还会为你们写些东西。

    展开全文
  • 二进制流的主要编码格式是base64码。可以在网上找一些在线转base64编码的网站进行尝试转换。 例如:http://imgbase64.duoshitong.com/然后通过前端展现和下载。 一、前端查看、下载功能实现 前端显示二进制流图片...
  • //保存到数据库中 using (WanWeiTiKuEntities WanweiTiku = new WanWeiTiKuEntities()) { tk_KeChen Kecheng = new tk_KeChen(); Stream stream = new FileStream("D:\\112....
  • 在MVC和api中接收图片都要用到request1.MVC用的是 HttpPostedFileBase flogo = Request.Files["file"];通过Request.Files["...判断文件格式长度并上传(现在只能判断jpg和png可添加注意全部小写)Htt...
  • 1. 读文件二进制流保存到byte数组bufferFile   string myComputerFilePath = "E:\\noticeFujian\\20150506\\6356652772708821699019939.txt"; //文件路径 //读文件二进制流  FileStream stream = new ...
  • 主要介绍了JavaScript读二进制文件并用ajax传输二进制流的方法的相关资料,需要的朋友可以参考下
  • 二进制流保存到文件/二进制流浏览器输入文件 /**********此段代码是把二进制流byte[]生成文件 START******************/ epolicyPdfSavePath=getEpolicyPdfSavePath(); if (epolicyPdfSavePath != null && ...
  • 再次请教各位大虾,有什么能让IE获取上传文件二进制流的方法么? 不能使用flash,因为面向的用户特殊,他们基本不会电脑,更别说安装flash。 IE获取不到ActiveXObject对象,我可以写bat文件,让用户下载后执行bat后...
  • C#上传文件二进制流的形式上传到服务器,并从服务器下载二进制流文件到本地
  • 将ByteBuffer二进制流存到文件

    千次阅读 2018-07-19 08:53:43
    ByteBuffer v=获取音频文件二进制流 将二进制流存到文件中一共二种方法 第一种: File file=new File("d://1.pcm") if(!file.exists()){ file.createNewFile(); } FileOutputStream fe=new ...
  • 一、将byte数组转二进制流文件,并保存到本地 byte [] oneshotBytes=new byte[]{78,-29,51,-125,86,-105,56,82,-94,-115,-22,-105,0,-45,-48,-114,27,13,38,45,-24,-15,-13,46,88,-90,-66,-29,52,-23,40,-2,116,2,...
  • // 使用axios,从后台获取文件二进制流 axios({ url:url, responseType:'arraybuffer' }).then((res)=>{ if (!res) return; let aurl = window.URL.createObjectURL( new Blob([res], { ...
  • 二进制流文件下载

    2020-11-19 15:45:56
    在做一些文件下载的时候,后端返回的二进制流文件,这里前端的兄弟姐妹就需要处理一下了。 直接上代码: // 下载 export function download(id) { return request({ url: `/rancher/download_contract/${id}`, ...
  • C++ 文件流 二进制文件流读写

    多人点赞 热门讨论 2021-05-22 21:01:15
    C++C++流文件流对文本文件流读写二进制文件流读写 C++ C++的IO 设备: 1)文件 2)控制台 3)特定的数据类型(stringstream) c++中,必须通过特定的已经定义好的类, 来处理IO(输入输出) 文件流 文件流: 对文件进行...
  • 需求: 前端请求后端接口,后端返回二进制流,前端需实现浏览器自动下载成excel文件。 原理: 通过a标签的href属性将二进制数据转换为文件,再通过download属性将文件下载到本地。 注意: 接口响应的数据类型要设置...
  • 需求:在前(web client)后(Restful Service)端完全解耦的模式框架下,webclient需要请求 Service 返回的图片文件二进制流),并在client端显示。第一步思考:拿到此需求, 基于程序员的狂妄心里,思考到显示...
  • 1、Java代码生成加密后数据,并保存为二进制流文件 (电脑上的图片就是二进制流文件,只不过我们打开的时候,借助于电脑软件渲染为图片) 上代码片段: 1 byte[] oneshotBytes = reqParms.getBytes(); 2 ...
  • 1)文本文件二进制文件的介绍 所谓文本文件就是在文件中存储的都是字符,,比如一个字符串123在文本文件中存储的都是其ASCII的形式,也就是每个字符的ASCII的形式: 31 32 33 在比如一个整型数据123在文本文件中...
  • 第一次接收到此时,在将缓冲区转换为图像之前,我能够一次读取16位,以便对每个像素执行一些计算,即每个像素存在16位数据块.现在下半部分是Django网络应用程序,这次我也通过ffmpeg,nginx,hls流向您展示了此视频输出...
  • 因为图片是以二进制流存入数据库的image类型,想要显示图片时,必须对取出的数据进行解码.这个问题让我就结了很长时间.解决方法,直接上代码:二进制转换 [html] view plaincopy function ...
  • C# 文件二进制流间的转换

    千次阅读 2016-12-23 15:56:51
    C# 文件二进制流间的转换实际用法:目的:把jar包或者zip包,保存到数据库里面。复制代码 private void UploadFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = “压缩文件|.zip;...
  • 解决了我的问题也完美表达了我当时的心路历程ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践写在前面 :从提出需求到完美的解决问题,实现过程是曲折的。 需求:在前(web client...
  • 文件转为二进制流保存在数据库

    千次阅读 2018-10-24 14:22:04
    **文件不建议保存在数据库,保存URL会更好,文件这种让文件系统去操作不是更好吗?我也不知道当时为什么会整理这样一篇文章。现在来说,文件不要存在数据库,存URL就好!!!**
  • 前端处理后端返回的二进制流文件

    千次阅读 2020-04-13 18:24:13
    前端处理后端返回的二进制流文件 https://blog.csdn.net/znbb_/article/details/95062866

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 301,365
精华内容 120,546
关键字:

文件二进制流