如何使用FileReader API从url上传图像文件?

时间:2014-01-03 12:35:36

标签: javascript jquery html5 filereader

在html表单中,我们有一个图像字段,用于上传文件。我按照http://blog.teamtreehouse.com/reading-files-using-the-html5-filereader-api的教程进行操作,从本地磁盘上传图像文件时效果很好。

但是假设我有一个图片网址http://www.google.com/images/logos/ps_logo2.png,并希望从远程网址上传此图片,而不是从本地磁盘上传。

FileReader API在尝试从本地磁盘上传图片时效果很好,但我们如何使用它来按网址加载图片?

通过将图像字段设置为base64,可以轻松创建<img src='data:image/png;base64,iAks4ds__base64__string' id='user_img'>图像并将其用于预览,但是应该采用哪种工作流程来使用jQuery或JavaScript从远程网址上传图像?

我怎么样?有什么建议吗?

2 个答案:

答案 0 :(得分:2)

FileReader API专用于本地文件(cf http://www.html5rocks.com/en/tutorials/file/dndfiles/

如果您想从远程网址下载图片并在javascript中提取数据,可以使用ImageCanvas元素,如以下问题中所述:Convert an image into binary data in javascript

答案 1 :(得分:1)

@fiddler回答所说,fileReader仅用于本地文件, 如果你需要从远程网址获取图像,那么你可以采用另一种方法

1)using Http Get request
2)using Canvas features

但是由于安全威胁,浏览器不允许脚本执行跨源请求,只有DOM本身才能这样做。可以通过
解决 1)Cors(跨域资源共享)?
2)Jsonp ?

现在你很好奇cors or jsonp

如果您可以访问存在远程事物的服务器,则可以执行大多数人推荐的服务器端CO ?

但是作为寻找可以处理任何远程资源的解决方案的问题,cors proxy ?可以帮助您
free cors proxies