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发送。
在chrome
, firefox
和safari
浏览器中使用File API (将File
对象转换为字符串)的JSON.Stringify
不起作用(将File
Object转换为{}
)[我不知道原因]
您可以使用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);
另一种解决方案 :您可以向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