我们目前有一个小的web应用程序,其中一部分是文件上传。目前,我们在客户端上使用Plupload,并启用了分块功能,以允许上传大型文件。这些文件被保存在应用服务器上,当它们出现时,这些块被追加。
现在,我们正在使用AmazonS3来存储文件,并有可能使用多个应用服务器。我发现很难处理这些大块。我试着以他们为榜样,但我遇到了问题。我尝试的主要内容是这样的:
UploadPartRequest uploadRequest = new UploadPartRequest()
.withBucketName(bucket).withKey(key)
.withUploadId(uploadId).withPartNumber(partNumber)
.withPartSize(bytes.length)
.withInputStream(new ByteArrayInputStream(bytes));
s3Client.uploadPart(uploadRequest);
我的问题是我需要知道上传的块。当我从上传的初始化中获得initiateMultipartuploadResult
时,我就有了它,但是我如何将它与以后出现的块相关联呢?我想我也许可以将它与第一个响应一起发送,然后将它与每个块请求一起发送回去。那似乎不是太远。
然后我发现,为了完成上载,我需要一个列表
,每次上载到AmazonS3时都会返回partetag
。所以,我的下一个问题是,当块从浏览器上传时,如何保存所有这些partetag
?我的第一个想法是,我可以在响应中发送每个块的partetag
,然后存储这些客户端。我不确定是否有一种方法可以知道最后一个块是什么时候上传的,这样我就可以发送所有这些partetag
。如果没有,我只需要每次发送所有我有的,然后只有最后一个请求才会使用它们。这一切对我来说似乎有点怪怪的。
所以,我想一定有人以前处理过这件事。有没有一个好的,标准的方法来做这件事?
我曾想过在应用服务器上构建文件,然后将其发送到S3,但是对于多个应用服务器,这些块不能保证最终会出现在同一个地方。
我的另一个想法是在上传期间将所有这些信息存储在数据库中,但我不确定是否需要在每个块请求中访问数据库。除此之外还有其他选择吗?
尝试我们的IaaS解决方案:
https://uploadcare.com
它支持最大5GB的文件大小。下面是一篇关于使用我们的系统上传大文件的成功用例的文章:
有没有办法通过网络浏览器上传大文件(超过80 Gb)?以前我一直在使用plupload上传文件(img、png、jpg),但它似乎不适用于较大的文件。我也想知道如何实现一个网页,用户可以上传像Mega.co.nz或Drive.google.com。如果使用web开发工具无法做到这一点,有谁能指导我如何划分 谢谢。
问题内容: 是否可以使用ajax将文件从浏览器升级到FTP服务器? 问题答案: 不会。浏览器不提供允许从JavaScript写入FTP的API。 您可以将文件发布到HTTP端点,然后使用服务器端代码将其推送到FTP服务器。
问题内容: 我是一名javascript / java开发人员,我一直在尝试弄清楚seleniumwebdriver自动化框架如何从文件系统上载文件。无法设置通过javascript输入的文件,因为它违反了安全性。但是,webdriver可以通过以下命令执行此操作: 因此,他们通过发送密钥来设置值吗?我不明白 我浏览了以下源代码:http : //code.google.com/p/seleniu
是否可以创建一个html表单,允许Web用户直接将文件上传到azure blob store,而不使用其他服务器作为中介?S3和GAW blob store都允许这样做,但我找不到对azure blob存储的任何支持。
本文向大家介绍跨浏览器拖放HTML文件上传?,包括了跨浏览器拖放HTML文件上传?的使用技巧和注意事项,需要的朋友参考一下 对于跨浏览器的HTML File Uploader,请使用FileDrop。它几乎可以在所有现代Web浏览器上使用。 根据官方规范- FileDrop是一个独立的跨浏览器,用于HTML5,旧版,AJAX,拖放,JavaScript文件上传
问题内容: 我正在开发Web应用程序。用户可以在一个地方使用HTTP协议上传文件。在经典HTML文件上传控件和Java小程序之间可以选择上传文件。 经典的HTML文件上传效果不好,因为您一次只能选择一个文件,并且在实际上传过程中很难获得任何进度指示(我最终使用计时器刷新了进度指示器,并从服务器通过AJAX调用)。优点:始终有效。 随着Java小程序,我可以做更多的事情:选择多个文件一次(甚至一个文