如何将输入文件对象序列化为 JSON? [英] How can I serialize an input File object to JSON?

查看:54
本文介绍了如何将输入文件对象序列化为 JSON?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to convert an HTML input file to a JSON string like this:

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

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

Now, in my Firebug it logs as:

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

为什么 jsonString 为空?

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

Background info: I want to send the file-reference with JSONP to another PHP server.

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

Additional Information: I want to convert only the file-pointer (reference) to a string, to send it via GET.

推荐答案

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

It is not possible to directly convert a File object into JSON using JSON.stringify in Chrome, Firefox and Safari.

您可以使用 JSON.stringify

例如:

// 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() 行为 到您的 File 对象

You can also add the toJSON() behavior to your File object

例如:

// 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 对象.

Note: send a File Object to server using the POST HTTP method.

这篇关于如何将输入文件对象序列化为 JSON?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆