Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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
Amazon s3对象Excel按流不工作(java)_Java_Excel_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon s3对象Excel按流不工作(java)

Amazon s3对象Excel按流不工作(java),java,excel,amazon-web-services,amazon-s3,Java,Excel,Amazon Web Services,Amazon S3,您好,我正在使用amazon s3 sdk for java,我正在尝试上载动态创建的excel。如果我能够使用以下方法在本地计算机上保存文件,会发生什么情况: //creating local file try { FileOutputStream fileOut = new FileOutputStream(new File("C:\\test.xls")); excelWorkBook.write(fileOut); fileOut.

您好,我正在使用amazon s3 sdk for java,我正在尝试上载动态创建的excel。如果我能够使用以下方法在本地计算机上保存文件,会发生什么情况:

//creating local file
    try {
        FileOutputStream fileOut = new FileOutputStream(new File("C:\\test.xls"));
        excelWorkBook.write(fileOut);
        fileOut.flush();
        fileOut.close();

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
但是当我试图通过流在AmazonS3上上传时,什么也没有发生,我得到了如下错误字符串

com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 400, AWS Service: Amazon S3, AWS Request ID: BC86F8AED980C7A3, AWS Error Code: RequestTimeout, AWS Error Message: Your socket connection to the server was not read from or written to within the timeout period. Idle connections will be closed., S3 Extended Request ID: P1yiux9HeVH92ifelvhMfTyQ27Hgu3sC4xx8DXstO+HLizMera2OkYv3BSVCEJtxtFz10/SRbMk=
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:767)
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:414)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:228)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3316)
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1336)
    at com.sterling.smartdata.service.upload.impl.UploadReportImpl.uploadToCloud(UploadReportImpl.java:96)
    at com.sterling.smartdata.service.upload.impl.UploadCloudLocalImplTest.testUpload(UploadCloudLocalImplTest.java:33)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:85)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:86)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:241)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:87)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
我被困在过去两天,我试图寻找解决方案,但我没有找到一个

代码:


更改以下两行:-

byte[] bf=new byte[byteArrayOutputStream.toByteArray().length];
ByteArrayInputStream bi=new ByteArrayInputStream(bf);


如何创建文件并不重要。我想说的是,只需剪切所有部分,将excel文件作为FileInputStream而不是
bi
读取,然后将其传递给
PutObjectRequest
。这是为了查找服务或防火墙的任何问题或其他问题。@bhantol我在PutObjectRequest中尝试了file object而不是stream。。它可以工作。。因此没有防火墙问题。请参阅。。我不想在上载前将文件存储在本地。这就是我使用ByteArrayInputStream()的原因.检查防火墙..我猜您的
ByteArrayInputStream
是空的,没有写入任何内容。尝试用代码格式回答-您可以尝试post@Andremoniy当我尝试ro upload file对象而不是stream时,它会起作用。因此它不可能是防火墙问题。您确定已删除
尝试{bi.read(byteArrayOutputStream.toByteArray());}catch(IOE异常){//TODO自动生成的捕获块e.printStackTrace();}
byte[] bf=new byte[byteArrayOutputStream.toByteArray().length];
ByteArrayInputStream bi=new ByteArrayInputStream(bf);
ByteArrayInputStream bi= ByteArrayInputStream(byteArrayOutputStream.toByteArray());