c# – 直接从网址上传文件到S3 Bucket
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 直接从网址上传文件到S3 Bucket,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1643字,纯文字阅读大概需要3分钟。
内容图文
![c# – 直接从网址上传文件到S3 Bucket](/upload/InfoBanner/zyjiaocheng/809/de08e1d557a647ba992f95f1704df615.jpg)
我们需要将视频文件存储移动到AWS S3.旧位置是一个cdn,所以我只有每个文件的URL(1000个文件,总文件大小> 1TB).不能直接在存储服务器上运行上载工具.
我已经创建了一个工具,可以下载文件,将文件上传到S3存储桶并使用新的HTTP URL更新数据库记录,并且除了需要永久使用外,还能正常工作.
下载文件需要一些时间(考虑每个文件接近千兆字节)并上传它需要更长的时间.
是否可以将视频文件直接从cdn上传到S3,这样我可以将处理时间减少一半?有点像读取文件块然后在读取下一个块时将其放入S3.
目前我使用System.Net.WebClient下载文件和AWSSDK进行上传.
PS:我对互联网速度没有问题,我在1GBit网络连接的服务器上运行应用程序.
解决方法:
不,没有办法指示S3代表您从非S3 URL获取资源并将其保存在存储桶中.
S3支持的唯一“获取”操作是PUT/COPY操作,其中S3支持从一个存储桶中获取对象并将其存储在另一个存储桶(或同一存储桶)中,甚至跨区域,甚至跨帐户,只要您有具有足够权限的用户,可以在事务的两端进行必要的操作.在这种情况下,S3在内部处理所有数据传输.
否则,获取远程对象并将其存储在S3中的唯一方法是下载资源,然后将其上传到S3 – 但是,没有什么能阻止您同时执行这两项操作.
要做到这一点,你需要编写一些代码,大概使用异步I / O或线程,以便你可以使用S3的Multipart Upload功能同时接收下载数据流并上传它,可能是对称的块.允许您编写单独的块(每个最小5MB),在最终请求中,S3将验证并合并为最多5TB的单个对象.分段上传支持并行上传块,并允许您的代码在不重新启动整个作业的情况下重试任何失败的块,因为S3不必按线性顺序上载或接收各个块.
如果原点支持HTTP range requests,您甚至不需要接收“流”,您可以发现对象的大小,然后按范围获取块并多部分上传它们.使用线程或异步I / O并行处理多个范围来执行此操作,并且您可能能够比单个单片下载更快地复制整个对象,具体取决于限制下载速度的因素.
我已经实现了45到75 Mbits / sec的聚合速度,同时使用这种技术从AWS外部将多GB文件上传到S3.
内容总结
以上是互联网集市为您收集整理的c# – 直接从网址上传文件到S3 Bucket全部内容,希望文章能够帮你解决c# – 直接从网址上传文件到S3 Bucket所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。