javascript - 如何将输入文件对象序列化为 JSON?

标签 javascript json file

我想像这样将 HTML 输入文件转换为 JSON 字符串:

var jsonString = JSON.stringify(file);
console.log( file );
console.log( jsonString );

现在,在我的 Firebug 中它记录为:

File { size=360195, type="image/jpeg", name="xyz.jpg", mehr...} 
Object {}

为什么 jsonString 是空的?

背景信息:我想将带有 JSONP 的文件引用发送到另一个 PHP 服务器。

附加信息:我只想将文件指针(引用)转换为字符串,以便通过 GET 发送它。

最佳答案

无法直接转换 File在 Chrome、Firefox 和 Safari 中使用 JSON.stringify 将对象转换为 JSON。

您可以使用 JSON.stringify 解决将 File 对象转换为字符串的问题

例如:

// get File Object  
var fileObject = getFile();

// reCreate new Object and set File Data into it
var newObject  = {
   'lastModified'     : fileObject.lastModified,
   'lastModifiedDate' : fileObject.lastModifiedDate,
   'name'             : fileObject.name,
   'size'             : fileObject.size,
   'type'             : fileObject.type
};  
 
// then use JSON.stringify on new object
JSON.stringify(newObject);

您还可以添加 toJSON() behavior到您的 File 对象

例如:

// get File Object  
var fileObject = getFile();

// implement toJSON() behavior  
fileObject.toJSON = function() { return {
   'lastModified'     : myFile.lastModified,
   'lastModifiedDate' : myFile.lastModifiedDate,
   'name'             : myFile.name,
   'size'             : myFile.size,
   'type'             : myFile.type 
};}  
 
// then use JSON.stringify on File object
JSON.stringify(fileObject);

注意:使用 POST HTTP 方法向服务器发送一个 File 对象。

关于javascript - 如何将输入文件对象序列化为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072267/

相关文章:

javascript - 第一张图片显示弹出窗口,而不是其他图片

javascript - 如何将 typescript 文件导入脚本标签

javascript - 按属性在 JSON 中搜索的最简单方法是什么?

json - 在Powershell中用不同的值查找和替换JSON中的值的所有实例

javascript - Ember.js/Rails 嵌套 JSON

表示 JSON 数据的 C# 类

file - 在同一区域将大文件从 S3 下载到 EC2 的最快方法是什么?

java - 有没有办法将文件复制到 jar 文件?

javascript - HTML5 Canvas - 在 Canvas 上拖动文本问题

c - read() 系统调用实际读取的数据量