嗨,我正在努力让选择器工作。文件将上传查找到我的S3存储桶页面返回Chrome控制台中的以下两个错误:
不安全的JavaScript尝试使用URL https://www.filepicker.io/dialog/open/?key=AJNd2634XTeyMNPGjr51mz&id=1350365313264&referrer=localhost&iframe=true&s=1,3,2,12&multi=true&m=image/ *#/ computer /从具有URL文件://localhost/Users/ben/fpiotest.html的框架访问框架。域,协议和端口必须匹配。 swfobject_src.js:1
未捕获FilepickerException:无效文件以获取元数据:0。不是filepicker url或FPFile对象。 filepicker.js:1
我的网页的完整代码如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="jquery-1.8.2.js"></script>
<!-- Adds the Filepicker.io javascript library to the page -->
<script src="https://api.filepicker.io/v1/filepicker.js"></script>
<script src="https://api.filepicker.io/v1/filepicker_debug.js"></script>
<script type="text/javascript">
//Seting up Filepicker.io with your api key
filepicker.setKey('<removed>');
</script>
</head>
<button style="margin-top: 35px" class="btn btn-primary" data-name="complex get"
onClick="filepicker.pickMultiple(
{
mimetype: 'image/*',
'container':'modal',
'metadata': true,
'services': ['COMPUTER', 'FACEBOOK', 'DROPBOX', 'FLICKR']
},
function(files){
var str = '';
//$('#multiResult').html(JSON.stringify(files));
for(var file in files) {
filepicker.stat(file, {size: true, filename: true, width: true, height: true, uploaded: true},
function(metadata){str += JSON.stringify(metadata);});
}
alert(str);
},
function(err){alert('error: ' + err);});">Run Code</button>
<!--function(response){$('#multiResult').html(JSON.stringify(response))});">Run Code</button>-->
<div class="row-fluid">
<div class="span2"><strong>Result:</strong></div>
<div class="span10">
<pre id="multiResult"></pre>
</div>
</div>
</html>
答案 0 :(得分:1)
看起来你被for-in循环绊倒了。 “files”是一个数组,所以第一个键将是0,即数组中的索引。我建议做:
for (var i = 0; i < files.length; i++) {
filepicker.stat(files[i], ...
}
编辑:确保在回调发生后也进行警报。见http://jsfiddle.net/YpX3L/
答案 1 :(得分:0)
出于好奇,您使用的浏览器是什么?
我们在IE9上遇到了类似的问题,并且控制台中的警告完全相同 - 文件上传,但S3存储调用失败了。
不清楚这里的问题是什么,因为它适用于Chrome就好了。