Javascript 将图像自动上载到s3

Javascript 将图像自动上载到s3,javascript,facebook,angularjs,amazon-s3,Javascript,Facebook,Angularjs,Amazon S3,我有一个上传表单,用户可以选择他/她想要的化身/图片。但是现在我正在集成facebook api,在使用FB Javascript SDK成功注册后,我将不得不将用户facebook个人资料pic上传到我们的S3中 <img src="https://fullpath/mypic.png" id="image"/> 我已经研究过如何将图像转换成水滴之类的东西。 那么,如何将mypic.png自动上传到s3?非常感谢您的帮助。您不能通过浏览器执行此操作,您需要一个服务器端脚本,它将接

我有一个上传表单,用户可以选择他/她想要的化身/图片。但是现在我正在集成facebook api,在使用FB Javascript SDK成功注册后,我将不得不将用户facebook个人资料pic上传到我们的S3中

<img src="https://fullpath/mypic.png" id="image"/>
我已经研究过如何将图像转换成水滴之类的东西。
那么,如何将mypic.png自动上传到s3?非常感谢您的帮助。

您不能通过浏览器执行此操作,您需要一个服务器端脚本,它将接收您的上传并将其发送到s3。您在服务器端使用哪个框架?

使用AWS JS SDK

以下是入门指南:

一旦你设置好角色,这其实很简单

不需要服务器端代码

当然,您首先需要获取图像数据,如下所示:

var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = 512;
canvas.height = 512;
context.drawImage(img, 0, 0, 512, 512);
var data = canvas.toDataURL('image/webp', 0.5); //webp and 50% compression

var params = {
  Key:Date.now().toString(), //example
  ContentType:'text/plain', //sending a base64 text string
  Body:data //the base64 string is now the body
};

bucket.putObject(params, function(err, data) { ... });

我认为您需要在服务器端执行此操作;因为浏览器无法通过JavaScript访问不同域上的项目。这样做的原因是为了防止跨站点脚本攻击。@Reboog711您不需要在服务器端执行此操作,请参阅下面的答案。如果这个答案有助于你创作海报,请投票或批准。我们使用java作为我们的后端。你不需要服务器端脚本,请参阅浏览器中的AWS JS SDK Javascript:注意,这种方法在IE9和更早版本中不起作用。注意,我觉得这回答了最初的问题,尽管AWS JS SDK有局限性,下面的答案是错误的。在OP的Java后端也很容易实现,但在这里,它是免费在客户端实现的?或者,如果可能的话,我们应该为其提供一个签名URL以供写入,并且需要来自服务器端。如果您希望代表您的应用程序上载图像,那么您需要一个服务器端解决方案,但这将是一个在Node.js中编写的超小型代理样式的方法。对于代表他们上传的客户端,他们需要首先通过FB、Google或Amazon进行身份验证,然后才能在客户端进行上传。