当前位置: 网站首页>小程序开发>小程序制作

淮滨网络公司哪家好【淮滨企业网站百度SEO推广公司】淮滨做网站开发价格、淮滨淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、淮滨高端企业网站页面制作设计专业公司需要多少钱

发表日期: 2021-05-10 15:10:33 浏览次数:147

淮滨网络公司哪家好【淮滨企业网站百度SEO推广公司】淮滨做网站开发价格、淮滨淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、淮滨高端企业网站页面制作设计专业公司需要多少钱

网站建设.jpg

淮滨县,河南省信阳市下辖县,位于信阳市东北部,地处东经115°11′—115°35,北纬32°15′—32°38'之间,总面积1209平方公里,地处北亚热带与暖温带气候过渡地带。 [1]  截至2020年6月,淮滨县辖4个街道、5个镇、10个乡, [2]  县政府驻滨湖街道。 [3]  截至2019年末,淮滨县总人口78.47万。 [4] 

淮滨因位于淮河之滨而得名。1952年8月经国务院批准,正式设立淮滨县。 [1]  1962年10月20日,合并于息县的原淮滨行政区域和固始县的原淮滨县期思、张庄两个区的行政区域为淮滨县的行政区域。 [5]  2019年3月,淮滨县入选第一批革命文物保护利用片区分县名单。 [6]  淮滨县产业集聚区是河南省首批确定的175个产业集聚区之一。造船业是淮滨县传统优势产业,也是纳入河南省“十一五”规划予以重点支持的装备制造业。 [7]  2020年2月26日,河南省人民政府批准淮滨县退出贫困县,正式脱贫摘帽。 [8]  淮滨县境内有期思古城、东西湖风景区、淮滨淮南湿地自然保护区等著名景点。

2019年,淮滨县生产总值225.92亿元,增长7.9%。其中,第一产业增加值41.26亿元,增长1.8%;第二产业增加值91.70亿元,增长8.9%;第三产业增加值92.97亿元,增长10.7%,三次产业结构18.3:40.6:41.1。 [4] 


前言

今天介绍一下文件的二进制家族js,file,base64,File,Blob,ArrayBuffer。 案例,假如有一个需求,我们通过解析等方式拿到了文件的二进制uint8array 或者base64或者blob,我们如何通过ajax提交给后端接口呢?

二进制互转

1. file对象转base64

  let reader = new FileReader();
  reader.readAsDataURL(file[0])
  console.log(reader)

2. base64 转成blob 上传

function dataURItoBlob(dataURI) {  
    var byteString = atob(dataURI.split(',')[1]);  
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];  
    var ab = new ArrayBuffer(byteString.length);  
    var ia = new Uint8Array(ab);  
    for (var i = 0; i < byteString.length; i++) {  
        ia[i] = byteString.charCodeAt(i);  
    }  
    return new Blob([ab], {type: mimeString});  }

3. blob 转成ArrayBuffer

let blob = new Blob([1,2,3,4])let reader = new FileReader();reader.onload = function(result) {
    console.log(result);}reader.readAsArrayBuffer(blob);

4. buffer 转成blob

let blob = new Blob([buffer])

5. base64 转 file

const base64ConvertFile = function (urlData, filename) { // 64转file
  if (typeof urlData != 'string') {
    this.$toast("urlData不是字符串")
    return;
  }
  var arr = urlData.split(',')
  var type = arr[0].match(/:(.*?);/)[1]
  var fileExt = type.split('/')[1]
  var bstr = atob(arr[1])
  var n = bstr.length  var u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], 'filename.' + fileExt, {
    type: type  });}

文件ajax上传

  const config = {
    headers:{'Content-Type':'multipart/form-data'}
  }
  let fileObj= base64ConvertFile(base64文件,文件名称)
  let formdata = new FormData()
  formdata.append('file',fileObj,名称)
  request.uploadImage(formdata,'', config).then(res=>{}) // 封装的axiso请求

介绍

首先介绍二进制数组

二进制数组由三个对象组成。

(1)ArrayBuffer对象:代表内存之中的一段二进制数据,可以通过“视图”进行操作。“视图”部署了数组接口,这意味着,可以用数组的方法操作内存。

(2) TypedArray对象:用来生成内存的视图,通过9个构造函数,可以生成9种数据格式的视图,比如Uint8Array(无符号8位整数)数组视图, Int16Array(16位整数)数组视图, Float32Array(32位浮点数)数组视图等等。

(3)DataView对象:用来生成内存的视图,可以自定义格式和字节序,比如第一个字节是Uint8(无符号8位整数)、第二个字节是Int16(16位整数)、第三个字节是Float32(32位浮点数)等等。

ArrayBuffer对象代表储存二进制数据的一段内存,它不能直接读写,只能通过视图(TypedArray视图和DataView视图)来读写,视图的作用是以指定格式解读二进制数据。

var buffer = new ArrayBuffer(12);var x1 = new Int32Array(buffer);x1[0] = 1;var x2 = new Uint8Array(buffer);x2[0]  = 2;x1[0] // 2

二进制的文件形式可以出现在如下场景中:

一、AJAX

传统上,服务器通过AJAX操作只能返回文本数据,即responseType属性默认为text。XMLHttpRequest第二版XHR2允许服务器返回二进制数据,如下:

var xhr = new XMLHttpRequest();xhr.open('GET', someUrl);xhr.responseType = 'arraybuffer';xhr.onload = function () {
  var let arrayBuffer = xhr.response;
  // ···};xhr.send();

二、Canvas

网页Canvas元素输出的二进制像素数据,就是类型化数组。

var canvas = document.getElementById('myCanvas');var ctx = canvas.getContext('2d');var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);var uint8ClampedArray = imageData.data;

三、WebSocket

WebSocket可以通过ArrayBuffer,发送或接收二进制数据。

var socket = new WebSocket('ws://127.0.0.1:8081');socket.binaryType = 'arraybuffer';// Wait until socket is opensocket.addEventListener('open', function (event) {
  // Send binary data
  var typedArray = new Uint8Array(4);
  socket.send(typedArray.buffer);});// Receive binary datasocket.addEventListener('message', function (event) {
  var arrayBuffer = event.data;
  // ···});

四、Fetch API

Fetch API取回的数据,就是ArrayBuffer对象。

fetch(url).then(function(request){
  return request.arrayBuffer()}).then(function(arrayBuffer){
  // ...});

五、File API

如果知道一个文件的二进制数据类型,也可以将这个文件读取为ArrayBuffer对象。

var fileInput = document.getElementById('fileInput');var file = fileInput.files[0];var reader = new FileReader();reader.readAsArrayBuffer(file);reader.onload = function () {
  var arrayBuffer = reader.result;
  // ···};

小结

1、File对象从input选择或者拖拽中产生 files[0]

File对象继承Blob,是种特殊的blob

2、blob 是二进制存储容器

window.URL.createObjectURL(blob)可以把一个blob转成blobURL,用作图片显示,文件下载(不能再服务器上存储,只能在浏览器使用)

blob.slice 分段上传

3、FileReader 转成文本、ArrayBufffer、DATA url等类型

4、ArrayBufffer 是原始存储二进制的缓冲区,相当于定义了一块空间

5、通过TypeArray 生成内存的视图,代表确定类型的二进制数据

6、DataView也是生成视图的,可以自定义格式和字节序


淮滨网络公司哪家好淮滨企业网站百度SEO推广公司淮滨做网站开发价格、淮滨淘宝店铺开店装修设计运营、公司网站制作方案流程改版维护费用、淮滨高端企业网站页面制作设计专业公司需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878