Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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
C# .NET直接从客户端将文件上载到Amazon S3_C#_Asp.net_Amazon Web Services_Amazon S3 - Fatal编程技术网

C# .NET直接从客户端将文件上载到Amazon S3

C# .NET直接从客户端将文件上载到Amazon S3,c#,asp.net,amazon-web-services,amazon-s3,C#,Asp.net,Amazon Web Services,Amazon S3,我正在使用ASP.NET C#MVC5构建一个应用程序。您可以将记录添加到数据库中,这些记录可以附加图像(如果使其更复杂,现在可以是单个图像) 我在存储上传上看到了一些其他帖子,但我看不出它们对我有用: 想法: 将文件(图像)上载到AmazonS3,而不让数据通过我的服务器 保留用户输入的表单上的任何数据(我很高兴有回帖、模式或不刷新页面) 将数据库值保存在文件表中,其中包含上载的文件的名称和类型等(这也将链接到与之关联的项目) 过程: 用户选择要上载的文件并按下上载按钮 文件直

我正在使用ASP.NET C#MVC5构建一个应用程序。您可以将记录添加到数据库中,这些记录可以附加图像(如果使其更复杂,现在可以是单个图像)

我在存储上传上看到了一些其他帖子,但我看不出它们对我有用:

想法:

  • 将文件(图像)上载到AmazonS3,而不让数据通过我的服务器
  • 保留用户输入的表单上的任何数据(我很高兴有回帖、模式或不刷新页面)
  • 将数据库值保存在文件表中,其中包含上载的文件的名称和类型等(这也将链接到与之关联的项目)
过程:

  • 用户选择要上载的文件并按下上载按钮
  • 文件直接上传到amazon(c#async method?,ajax?)
  • 缩略图版本也使用相同的方法创建并上传到amazon?(“-thumb”追加到文件名后)
  • 使用文件名、amazon文件密钥、文件类型等为这两个文件创建的数据库记录
  • (可选)然后在屏幕上上传器旁边显示缩略图
  • 用户按“保存”保存记录和图像信息
当用户保存项目信息时(可能正在创建新记录或编辑现有记录),可以附加文件信息(如果在上载文件时未附加文件信息??)

限制条件:

  • 避免使用基于客户端的解决方案,以提高应用程序的性能和跨平台的可访问性(因此,避免使用JavaScript,当然也不要使用flash)
  • 尽可能减少用户上载文件而忘记保存(或浏览器崩溃并失去已上载文件的链接)的可能性
如果我对ASP.NETMVC有更多了解,我希望能有更多的建议或想法。我想知道如何使用异步方法或ajax调用来停止页面重新加载和丢失输入数据

我已经下载了AmazonSDK,并围绕它构建了一些类,但我意识到如果我不通过我的应用程序上传,它就没那么有用了! 我为客户端上传采集了一些样本,这些样本非常有用(我设法让它在我的客户端上传应用程序中正常工作),但该解决方案中缺少了很多内容来解决我的问题,我希望为我更复杂的问题提供一个整洁、可靠的解决方案

任何想法都欢迎!!我真的在努力想办法

更新日期:2016年12月15日 为了澄清这一点,我想将客户端处理量降至最低,使低功耗的移动设备不会难以处理请求(显然,如果该设备无法处理简单的图像上传,那么我不需要担心)。
就服务器端处理而言,我要避免的主要事情是出于带宽原因通过服务器上传图像,我非常乐意在服务器上进行任何其他处理。

好的,这很愚蠢。您希望避免服务器端处理和客户端处理。无论如何,它应该上传文件,并在途中生成缩略图。请让你的约束更合理。@SergeyKovalev是的,你的观点是合理的。我已经用澄清更新了我的答案。您需要保留原始文件的分辨率吗?还是可以在客户端缩小它?我建议在AWS中使用S3事件和lambda来执行缩略图和DB插入。与此同时,你可以轮询服务器,看看它是否完成了。好吧,这太傻了。您希望避免服务器端处理和客户端处理。无论如何,它应该上传文件,并在途中生成缩略图。请让你的约束更合理。@SergeyKovalev是的,你的观点是合理的。我已经用澄清更新了我的答案。您需要保留原始文件的分辨率吗?还是可以在客户端缩小它?我建议在AWS中使用S3事件和lambda来执行缩略图和DB插入。同时,您可以轮询服务器以查看是否完成了此操作。