Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当图像是注册表单(或类似表单)的一部分时,使用Rails/Heroku将其直接上载到S3 脚本_Ruby On Rails_Image_Upload_Amazon S3 - Fatal编程技术网

Ruby on rails 当图像是注册表单(或类似表单)的一部分时,使用Rails/Heroku将其直接上载到S3 脚本

Ruby on rails 当图像是注册表单(或类似表单)的一部分时,使用Rails/Heroku将其直接上载到S3 脚本,ruby-on-rails,image,upload,amazon-s3,Ruby On Rails,Image,Upload,Amazon S3,假设我们正在编写一个web应用程序,其中有一个简单的注册页面,其中包含以下内容: 名字 电子邮件 密码 侧面图 好的,很好,接下来用户点击“创建配置文件”。理想情况下,我们希望发生以下情况: 要在客户机上调整大小的映像(使用其cpu) 将该图像直接发布到S3,放到一个独特的休息场所。(无需通过我们的托管服务器,我们就可以在工作过度的单线程rails应用程序上花费dyno和宝贵的时间) 了解我们的图像何时成功上传到S3 一旦图像安全可靠,请通过我们的云服务器提交第二份表单,其中包含名称、电子邮

假设我们正在编写一个web应用程序,其中有一个简单的注册页面,其中包含以下内容:

  • 名字
  • 电子邮件
  • 密码
  • 侧面图
好的,很好,接下来用户点击“创建配置文件”。理想情况下,我们希望发生以下情况:

  • 要在客户机上调整大小的映像(使用其cpu)

  • 将该图像直接发布到S3,放到一个独特的休息场所。(无需通过我们的托管服务器,我们就可以在工作过度的单线程rails应用程序上花费dyno和宝贵的时间)

  • 了解我们的图像何时成功上传到S3

  • 一旦图像安全可靠,请通过我们的云服务器提交第二份表单,其中包含名称、电子邮件、密码和我们麻烦图像的路径

  • 问题: 这种方法听起来正确吗

    还有,有人知道如何在Rails中实现这一点的例子吗?理想情况下,我正试图找到一种方法,从用户那里提取差异,这样他们只需点击一个保存按钮,因为这就是他们所关心的

    我找到了一些零碎的东西,但没有任何东西把它们联系在一起

    到目前为止,我一直在考虑使用这些文章中概述的SwfUpload

    说到Rails,我充其量只是一个爱好者,只是想知道是否有一个经过深思熟虑的模式?到目前为止,我所看到的一切(就像那项工作一样伟大和有用)似乎只达到了一半


    我不知道,只是感觉我在努力做一些现代开发过程中人们每天都必须处理的事情,我感觉我遗漏了一些东西…

    如果我错了,请纠正我,但听起来好像你想在客户端做所有事情(这意味着JavaScript)

    我相信有一种方法可以使用Canvas调整图像的大小,但是1)它看起来不太好(除非是简单的裁剪),2)这假设用户有一个现代化的浏览器,3)如果你使用Canvas,你需要在完成处理后将其转换回图像,这意味着您需要将数据发送到某个地方以存储在文件中,这意味着您的服务器受到了攻击

    使用一个直接发布到S3API的表单将权限发布到S3是可以的,除了您不知道图像何时被上传,因为控件离开页面,永远不会回来。这意味着您必须使用Ajax来完成它。。。除非您遇到了跨源策略。您可以使用iframe+postMessage技巧实现这一点,尽管这会对您的服务器造成影响。所以我认为解决这个问题的唯一方法就是使用Flash,阿拉Gmail的附件上传器(这似乎是你要走的路)。如果您按照这条路线走下去,那么您可能需要稍微更改工作流程——即,不要在提交时上载图像,然后等待图像提交后再继续,而是让用户手动上载图像并阻止“提交”按钮,直到上载图像。(在我看来,这样更有用一些。)


    因此,除了更换主机提供商或添加更多服务器之外,我不确定是否有完整的解决方案,但至少有一些想法。

    在搜索另一个问题时遇到了这个问题:使用S3可以使用并发布到隐藏的iframe。默认情况下,使用浏览器上载时,可以指定重定向位置。然后,您可以让重定向位置调用提交注册表的javascript。我成功地用我想要上传的图像文件做到了这一点:然后我调用我的heroku dyno,它在后台任务中将文件从S3中提取出来,生成一个缩略图,然后将缩略图发布回S3


    然而,在浏览器中调整大小将非常困难。请参阅以获得一个可能的解决方案。

    我想您已经找到了这个解决方案,但是您可以直接上传到S3。调整大小通常是在服务器上完成的,所以我不认为这是现代开发中人们每天都要处理的事情。检查。我正在考虑在用户使用进度条选择文件后自动上载文件,并锁定提交按钮,直到完成。。。或者说实话,把它吸起来,放进我的常规主机箱,直到我必须直接进入S3。换句话说,在我需要之前不要优化。据我所知,该网站可能会因10名用户而崩溃和烧毁,而我花了一周时间在一个花哨的图像上传程序上,却一无所获:-)