首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从服务器Angular 2下载文件

从服务器Angular 2下载文件
EN

Stack Overflow用户
提问于 2017-12-12 19:29:16
回答 1查看 947关注 0票数 0

我有一个代码来转换图像为dataUrl

代码语言:javascript
运行
复制
  convertToDataURLviaCanvas(url, outputFormat){
return new Promise((resolve, reject) => {
  const img = new Image();
  img.crossOrigin = 'anonymous';
  img.onload = () => {
    let canvas = <HTMLCanvasElement> document.createElement('CANVAS'),
      ctx = canvas.getContext('2d'),
      dataURL;
    canvas.height = img.height;
    canvas.width = img.width;
    ctx.drawImage(img, 0, 0);
    dataURL = canvas.toDataURL(outputFormat);
    resolve(dataURL);
    canvas = null;
  };
  img.src = url;
});

}

和一个调用此函数

代码语言:javascript
运行
复制
  this.convertToDataURLviaCanvas('https://www.google.de/images/srpr/logo11w.png', 'image/jpeg').then(imageData => {
  this.zip.file(image.file_name, imageData, {binary: true})

  this.zip.generateAsync({type: 'blob'}).then(content => {
        saveAs(content, 'images.zip');
      });
})

但是CORS有一个错误

代码语言:javascript
运行
复制
Failed to load https://www.google.de/images/srpr/logo11w.png: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

我怎么才能修复它呢?

EN

回答 1

Stack Overflow用户

发布于 2017-12-12 20:37:57

您不能从客户端代码下载该文件,因为执行您的代码的浏览器代表远程服务器强制执行不跨域策略。您必须对Google服务器应用更改,才能从Google服务器请求URL。

你能做的就是让你自己的后端下载文件(使用curl或者你手头上的任何东西),然后在那里转换或者循环到你的前端。

例如,您可以有一个四行代码的php脚本(或后端技术中的等效函数),用于遍历:

代码语言:javascript
运行
复制
<?php
header("Content-type: image/png");
echo(readfile("https://www.google.de/images/srpr/logo11w.png"));
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47771553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档