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

pea*_*ker 30 javascript jquery html5 json file

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

var jsonString = JSON.stringify(file);
console.log( file );
console.log( jsonString );
Run Code Online (Sandbox Code Playgroud)

现在,在我的萤火虫中:

File { size=360195, type="image/jpeg", name="xyz.jpg", mehr...} 
Object {}
Run Code Online (Sandbox Code Playgroud)

为什么jsonString空?

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

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

ahm*_*mdy 9

JSON.Stringify文件API(转换File对象为字符串)中chrome,firefox并且safari浏览器不能正常工作(转换File对象{})我不知道其中的原因]

您可以File使用将对象转换为字符串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);
Run Code Online (Sandbox Code Playgroud)

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

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);
Run Code Online (Sandbox Code Playgroud)

注意:File使用POST动词将Object 发送到服务器


Maë*_*son 5

您必须使用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 );
Run Code Online (Sandbox Code Playgroud)