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

我想将 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 对象发送到服务器。

https://stackoverflow.com/questions/24139216/

相关文章:

json - 如何自定义来自 spring @Valid 验证的默认错误消息?

php - Laravel 5 Controller 将 JSON 整数作为字符串发送

python - datetime.date(2014, 4, 25) 在 Django 中不是 J

ruby - 将 json 解析为对象 ruby

python - 如何从一个文件中提取多个 JSON 对象?

json - Spring Boot Actuator 端点的 pretty-print JSON

ajax - jquery mobile可折叠和galaxy tab 10.1 json响应给出随机

python - Django:使用 Javascript 在我的模板中解析 JSON

php - json_encode 不使用 html 字符串作为值

javascript - JSON.stringify 抛出 RangeError : Invali