Load Image Data into Angularjs
我有一堆图片网址,我想从浏览器中将图片下载到一个zip文件中。 我正计划使用jszip创建zip文件。 我有来自服务器的所有图像网址。 我尝试的是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | var img = zip.folder("profiles"); async.mapSeries($scope.queriedUsers, function (user, iterCallback) { delete $http.defaults.headers.common['X-Requested-With']; $http.get(user.profile_image_url, {responseType:"arraybuffer"}) .success(function (data) { iterCallback(null, {data: data, name: user.screen_name}); }) .error(function (data, status) { iterCallback(status, data); }) }, function (err, results) { _.each(results, function (result){ img.file(result.screen_name +".gif", result.data, {base64: true}); }); var content = zip.generate(); window.location.href="data:application/zip;base64," + content; }); |
我得到的错误是:
1 | OPTIONS <url> No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. |
我发现有趣的是,在html中图像可以正常加载:
1 2 3 4 5 6 7 8 | <tbody> <tr ng-repeat="user in queriedUsers"> <td><img ng-src="{{user.profile_image_url}}" alt="User Twitter Image"></td> <td>{{user.screen_name}}</td> <td>{{user.name}}</td> <td>{{user.description}}</td> </tr> </tbody> |
如何将图像数据加载到angularjs? 有没有办法直接为ng-src获取它?
谢谢
基本上,您在这里遇到跨域问题。 您可以使用远程URL打开图像,但是不能向与您的域不同的域发出Ajax请求。 请在这里看看:http://en.wikipedia.org/wiki/Same-origin_policy
您可以通过创建代理来解决此问题。 这意味着您的Ajax请求将指向您的服务器,并且在响应时您可以发送图像地址,此地址以后可以正常使用。
如果不使用CORS,则无法对不同的域进行Ajax调用。
但是,如果您只需要实际的图像,则可以执行以下操作:
1 2 3 4 5 6 7 8 9 10 | // Create image object var img = document.createElement("img"); // Set source to profile image url img.src = user.profile_image_url; // Wait for image to load img.onload = function(){ // Callback } |