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

查看:443
本文介绍了如何将输入File对象序列化为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.

推荐答案

不可能直接转换文件对象转换为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);

您还可以添加 EX:

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

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

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