Javascript 在amazon S3上上载大小超过3 gb的文件
我试图上传文件大小超过3 gb的亚马逊当我上传文件的大小是小的,他们得到上传快乐 但当我尝试上传大文件时,它会显示错误HTTP400 有谁能告诉我哪里出了问题,或者我需要成批上传文件吗。 提前谢谢Javascript 在amazon S3上上载大小超过3 gb的文件,javascript,jquery,asp.net,asp.net-mvc,amazon-s3,Javascript,Jquery,Asp.net,Asp.net Mvc,Amazon S3,我试图上传文件大小超过3 gb的亚马逊当我上传文件的大小是小的,他们得到上传快乐 但当我尝试上传大文件时,它会显示错误HTTP400 有谁能告诉我哪里出了问题,或者我需要成批上传文件吗。 提前谢谢 public bool UploadFileDicom(HttpPostedFileBase file) { bool isSuccess = false; try { string bucketName = Conv
public bool UploadFileDicom(HttpPostedFileBase file)
{
bool isSuccess = false;
try
{
string bucketName = Convert.ToString(WebConfigurationManager.AppSettings["iqcDicomBucket"]);
client = new AmazonS3Client(AWS_ACCESS_KEY, AWS_SECRET_KEY, Amazon.RegionEndpoint.USWest2);
var request = new PutObjectRequest()
{
BucketName = bucketName,
CannedACL = S3CannedACL.PublicRead,//PERMISSION TO FILE PUBLIC ACCESIBLE
Key = file.FileName,
InputStream = file.InputStream//SEND THE FILE STREAM
};
client.PutObject(request);
isSuccess = true;
}
catch (Exception ex)
{
logger.Error(DateTime.Now + "Error in GlobalComman.cs, CreateDocStatus_TraningAndValidation function: " + ex.Message);
throw ex;
}
return isSuccess;
}
首先,不允许上载超过5gb的文件(6gb必须失败,但不能上载2gb文件): 但是上载大文件可能会出现各种问题,因此,为了避免单个上载出现问题,建议使用多部分上载 使用上载部件中的对象可以上载大对象,最多可达5 TB 多部分上传API旨在改善较大对象的上传体验。可以部分上载对象。这些对象部分可以独立、以任何顺序和并行方式上载。对于大小从5 MB到5 TB的对象,可以使用多部分上载。有关详细信息,请参见使用多部分上载上载对象。有关更多信息,请参阅使用多部分上载API上载对象 以下Java代码示例将部分中的文件上载到Amazon S3存储桶:
public class UploadObjectMultipartUploadUsingHighLevelAPI {
public static void main(String[] args) throws Exception {
String existingBucketName = "*** Provide existing bucket name ***";
String keyName = "*** Provide object key ***";
String filePath = "*** Path to and name of the file to upload ***";
TransferManager tm = new TransferManager(new ProfileCredentialsProvider());
System.out.println("Hello");
// TransferManager processes all transfers asynchronously,
// so this call will return immediately.
Upload upload = tm.upload(
existingBucketName, keyName, new File(filePath));
System.out.println("Hello2");
try {
// Or you can block and wait for the upload to finish
upload.waitForCompletion();
System.out.println("Upload complete.");
} catch (AmazonClientException amazonClientException) {
System.out.println("Unable to upload file, upload was aborted.");
amazonClientException.printStackTrace();
}
}
}
@JordiCastilla关于S3多部分和5GB阈值是正确的。。。但您的第一个问题是本地问题:
maxRequestLength="2147482624"
嗯,大约2吉布。所以,当你说你的控制器没有启动时,这表明你的400错误甚至不是像问题所暗示的那样来自S3。您的本地配置导致浏览器的请求在飞行中被取消,因为它比您的本地配置允许的大
您的第一步似乎是增加此配置值,请记住,当您超过5GB阈值时,随后还需要过渡到多部分上传到S3
另外,请记住,正在进行的请求也会占用服务器上的临时磁盘空间,因此即使该值已经很大(更不用说将其设置得更大),也会使您面临拒绝服务攻击的风险,虚假请求可能会耗尽您的临时空间,从而禁用您的站点。请退出。它以可配置大小的块上传文件。因为您的要求是在浏览器中完成,所以这应该可以工作。这是我的web配置设置,请与amazon检查他们允许的最大文件大小。但是,当我尝试上载大小为6 gb的文件时,它会显示错误http 400,并且它不会执行控制器代码,也不会进行应答,但我是否需要将文件分块并使用上传。如果是,我如何在流中获取文件如果我上传的文件大小超过gb我的控制器未执行我在浏览器中执行此操作感谢您回复maxRequestLength=“2147482624”这是我使用jquery或BlueImp之类的html文件上传程序所能做的最大工作。你能建议我正在搜索的任何东西吗?没有得到任何解决方案。不幸的是,“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与堆栈溢出无关”--