js:输入文件到json,例如JSON.stringify

我想将html输入文件转换为json字符串,如下所示:

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

现在,在我的萤火虫中:

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

为什么jsonString空?

背景信息:我想用jsonp将文件引用发送到另一个php服务器

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

chromefirefoxsafari浏览器中使用File API (将File对象转换为字符串)的JSON.Stringify不起作用(将File Object转换为{} )[我不知道原因]

您可以使用JSON.StringifyFile对象转换为字符串

例如:

 // 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); 

另一种解决方案 :您可以向File对象添加toJSON()行为

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动词将File对象发送到服务器

您必须使用FileReader API读取文件内容。 File对象不包含文件内容(它只是指向文件的指针,允许您稍后阅读)。

您可以查看此HTML5Rocks文章,以了解有关此API用法的更多信息。

 var file = getAFile( ); var success = function ( content ) { console.log( JSON.stringify( content ) ); } var fileReader = new FileReader( ); fileReader.onload = function ( evt ) { success( evt.target.result ) }; fileReader.readAsText( file ); 

如果有人还在寻找解决方案,请在JSFiddle的不同post和工作示例中查看我的答案 。

JS:

 function getFiles(){ var files = document.getElementById("myFiles").files; var myArray = []; var file = {}; console.log(files); // see the FileList // manually create a new file obj for each File in the FileList for(var i = 0; i < files.length; i++){ file = { 'lastMod' : files[i].lastModified, 'lastModDate': files[i].lastModifiedDate, 'name' : files[i].name, 'size' : files[i].size, 'type' : files[i].type, } //add the file obj to your array myArray.push(file) } //stringify array console.log(JSON.stringify(myArray)); } 

HTML:

  
 var obj = { name: 'dashu3f' }; var stringObj = JSON.stringify(obj); console.log(typeof stringObj); console.log(stringObj); 

打开终端此文件夹文件并运行节点json.js