当前位置: 首页 > 面试题库 >

通过输入类型=文件获取字节数组

嵇浩淼
2023-03-14
问题内容

var profileImage = fileInputInByteArray;

$.ajax({

  url: 'abc.com/',

  type: 'POST',

  dataType: 'json',

  data: {

     // Other data

     ProfileImage: profileimage

     // Other data

  },

  success: {

  }

})



// Code in WebAPI

[HttpPost]

public HttpResponseMessage UpdateProfile([FromUri]UpdateProfileModel response) {

  //...

  return response;

}



public class UpdateProfileModel {

  // ...

  public byte[] ProfileImage {get ;set; }

  // ...

}


<input type="file" id="inputFile" />

我正在使用ajax调用将输入类型的byte[]值=输入到以api[]格式接收的Webapi输入文件。但是,我遇到了获取字节数组的困难。我期望我们可以通过File API获得字节数组。

注意:在通过ajax调用之前,我需要先将字节数组存储在变量中


问题答案:

[编辑]

如上面的评论所述,尽管仍在某些UA实现中,readAsBinaryString方法尚未达到规格要求,因此不应在生产中使用。而是使用readAsArrayBuffer并遍历它buffer来获取二进制字符串:

document.querySelector('input').addEventListener('change', function() {



  var reader = new FileReader();

  reader.onload = function() {



    var arrayBuffer = this.result,

      array = new Uint8Array(arrayBuffer),

      binaryString = String.fromCharCode.apply(null, array);



    console.log(binaryString);



  }

  reader.readAsArrayBuffer(this.files[0]);



}, false);


<input type="file" />

<div id="result"></div>

对于将二进制数组转换为arrayBuffer的更可靠的方法。

[旧答案] (已修改)

是的,<input type="file"/>感谢FileReader对象及其method,文件API确实提供了一种将File中的文件转换为二进制字符串的方法readAsBinaryString
[ 但是不要在生产中使用它! ]

document.querySelector('input').addEventListener('change', function(){

    var reader = new FileReader();

    reader.onload = function(){

        var binaryString = this.result;

        document.querySelector('#result').innerHTML = binaryString;

        }

    reader.readAsBinaryString(this.files[0]);

  }, false);


<input type="file"/>

<div id="result"></div>

如果需要数组缓冲区,则可以使用readAsArrayBuffer()方法:

document.querySelector('input').addEventListener('change', function(){

    var reader = new FileReader();

    reader.onload = function(){

        var arrayBuffer = this.result;

      console.log(arrayBuffer);

        document.querySelector('#result').innerHTML = arrayBuffer + '  '+arrayBuffer.byteLength;

        }

    reader.readAsArrayBuffer(this.files[0]);

  }, false);


<input type="file"/>

<div id="result"></div>


 类似资料:
  • 问题内容: 我在Eclipse中编写了一个应用程序,该应用程序已成功编译并运行。之后,在相应的目录中找到 .java和 .class文件。然后,我删除了* .class文件,现在我不知道该如何找回它。 Eclipse写道:“未编写类文件。如果这样,请尝试刷新此项目并进行构建,该项目可能会不一致”。 通过右键单击该项目,我得到了一个下拉菜单,在其中我找到了“刷新”,但找不到如何“构建”该项目。 那么

  • 本文向大家介绍Javascript读取上传文件内容/类型/字节数,包括了Javascript读取上传文件内容/类型/字节数的使用技巧和注意事项,需要的朋友参考一下 在网站开发的某些情况下我们需要上传文件到服务器,在这个过程中可能会对文件做一定的限制,比如说文件格式,文件大小等,在一些情况下我们上传文件其实是为了获取其中的内容在前端区域展示,这个时候就不需要将文件上传到服务器,完全可以通过Javas

  • 问题内容: 我正在尝试从webview使用android构建Web项目。我有一个类型为file的输入字段,`<input type=”file” `可让用户将文件上传到服务器,但是在android webview上似乎不起作用,当我点击浏览按钮时,什么也没发生。 编译器 activity_comp.xml comp.html (在资产文件夹中) 任何帮助,将不胜感激。 问题答案: Riad的答案指

  • 问题内容: 是否可以在JavaScript中使用textarea元素的值,还是应该使用? 谢谢。 问题答案: 您应该使用.value

  • 主要内容:理解反射的类型(Type)与种类(Kind)在 Go语言中通过调用 reflect.TypeOf 函数,我们可以从一个任何非接口类型的值创建一个 reflect.Type 值。reflect.Type 值表示着此非接口值的类型。通过此值,我们可以得到很多此非接口类型的信息。当然,我们也可以将一个接口值传递给一个 reflect.TypeOf 函数调用,但是此调用将返回一个表示着此接口值的动态类型的 reflect.Type 值。 实际上,r

  • 问题内容: 嗨,Java中有什么方法可以获取静态通用类类型 我结束了构建 我想知道是否存在类似的东西: (我真的不想构造新的对象只是为了获得其类型) 谢谢 问题答案: 由于所有类实际上在运行时都对应于同一类,因此可以这样做: 但是由于某种原因,Java不喜欢它。用String尝试过: 好吧,那我们就傻了吧: 这很愚蠢,但是有效。它会产生“未经检查”的警告,但是您的示例也是如此。请注意,尽管如此,它