对象对json很简单,但不知道我的代码发生了什么。
所以我想用PHP读取图像元数据(最重要的是图像创建日期-时间),但是iPhone和其他手机不发送这些信息与图像,它的工作,如果尝试上传使用PC。但是如果图像被压缩,那么我们就失去了所有的元数据。
因此,使用php读取元数据是没有用的,于是我决定通过JavaScript读取,并为此使用exif.js。
对于多次上传,一切都很好,但是当我试图将对象转换为json时,我得到的是空字符串。
这是我的密码
$('#ServicePhotos').change(function(){
$('#err_msg').html('');
var objects = {};
var lg = this.files.length;
for(var i = 0; i < lg; i++){
(function(file){
var file = file;
var file_path = file.name;
if(file_path){
var startIndex = (file_path.indexOf('\\') >= 0 ? file_path.lastIndexOf('\\') : file_path.lastIndexOf('/'));
var filename = file_path.substring(startIndex);
if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
filename = filename.substring(1); }
//console.log('uploading image ' + filename);
}
EXIF.getData(file, function() {
var exifData = EXIF.pretty(this);
if (exifData) {
var allMetaData = EXIF.getAllTags(this);
var DateTime = EXIF.getTag(this, "DateTime");
objects[filename] = {'created':DateTime};
}
});
})(this.files[i]);
}
console.log(objects); /*showing all data */
var myJSON = JSON.stringify(objects);
console.log(myJSON); /* EMPTY ??? */
$('#err_msg').html(myJSON);
$('#meta_data').val(myJSON);
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/exif-js/2.3.0/exif.js"></script>
<input id="ServicePhotos" type="file" />
<div id="err_msg"></div>
现在这里的 "var myJSON“没有显示json数据。
这是console.log

发布于 2018-08-03 10:23:44
如果不能对其进行字符串化,则可能意味着对象没有可枚举的属性。您可以测试您的对象属性是否为可计数,如果为真,则应该能够使用JSON.stringify()。
来自MDN (https://developer.mozilla.org):
“所有其他对象实例(包括Map、Set、WeakMap和WeakSet)只能序列化它们的可枚举属性。”
来自文件:
https://stackoverflow.com/questions/51670366
复制相似问题