Хром, FF и узел кажутся неправильными здесь, Бабель прав:
Функции стрелок не имеют собственного arguments
привязки в своей области; no arguments object создается при их вызове.
ищет официальные документы здесь
Выражения функции функции для функций, которые имеют свои [[ThisMode ]] установите на
lexical
, а когда они называются манифестацией объявления , не создается объектarguments
. Существует даже примечание (18а), в котором указано, что «функции Arrow никогда не имеют объектов аргументов. ».
JSON.Stringify
с File 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);
Другое решение: вы можете добавить 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);
Примечания: отправить File
Объект на сервер с помощью POST
глагола
В случае, если кто-то еще ищет решение для этого, см. мой ответ в другом сообщении и рабочем примере на JSFiddle.
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:
<input id="myFiles" type="file" multiple onchange="getFiles()" />
Вы должны прочитать содержимое файла, используя 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 );
var obj = {
name: 'dashu3f'
};
var stringObj = JSON.stringify(obj);
console.log(typeof stringObj);
console.log(stringObj);
откройте этот файл папки и запустите узел json.js