当前位置: 首页 > 知识库问答 >
问题:

无法将文件上传到主桶的子文件夹

茅桐
2023-03-14

我试图在AWSS3中上传错误文件,但它显示错误,如“您试图访问的存储桶必须使用指定的endpoint寻址。请将所有未来的请求发送到此endpoint:”test9011960909。s3。亚马逊。com“

我还指定了“区域”=

当我指定时,它正在工作

'Bucket'       => $this->bucket,

但我想把文件上传到主bucket的子文件夹中

'Bucket'       => $this->bucket . "/" . $PrefixFolderPath,

我已经应用了AWS S3批准的答案:您试图访问的桶必须使用指定的终结点进行寻址

但仍然得到同样的错误,我使用的是php

代码

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

class AWSS3Factory {

    private $bucket;
    private $keyname;

    public function __construct() {
        $this->bucket = AWSS3_BucketName;
        $this->keyname = AWSS3_AccessKey;
        // Instantiate the client.
    }

    public function UploadFile($FullFilePath,$PrefixFolderPath="") {
        try {
            $s3 = S3Client::factory(array(
                'credentials' => array(
                    'key'    => MYKEY,
                    'secret' => MYSECKEY,
                    'region' => 'eu-west-1',
                )
            ));

            // Upload data.
            $result = $s3->putObject(array(
                'Bucket'       => $this->bucket . "/" . $PrefixFolderPath,
                'Key'          => $this->keyname,
                'SourceFile'   => $FullFilePath,
                'StorageClass' => 'REDUCED_REDUNDANCY'
            ));
            return true;
            // Print the URL to the object.
            //echo $result['ObjectURL'] . "\n";
        } catch (S3Exception $e) {
            echo $e->getMessage() . "\n";
        }
    }
 }

共有2个答案

陶沛
2023-03-14

您必须将$PrefixFolderPath添加到'Bucket'而不是'Key'

$result = $s3->putObject(array(
    'Bucket'       => $this->bucket,
    'Key'          => $PrefixFolderPath . "/" . $this->keyname,
    'SourceFile'   => $FullFilePath,
    'StorageClass' => 'REDUCED_REDUNDANCY'
));
章威
2023-03-14

您必须以另一种方式创建s3实例,如下所示:

$s3 = S3Client::factory([
    'region'      => '',
    'credentials' => ['key' => '***', 'secret' => '***'],
    'version' => 'latest',
]);
 类似资料:
  • 如果有人帮我解决这个问题,我会非常感激。 我正在为我的项目使用codeigniter框架。并想将我的图像上传到amazon s3桶中。当我尝试使用S3.php文件时 string(92)“不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。” 有人能帮我解决这个问题吗。

  • 当我试图上传文件到泽西岛时,我发现下面有一些异常,请帮助我解决。谢谢 html文档:- 阿贾克斯:- Java代码:- 例外情况:- 2015年6月17日下午7:55:34组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve调用 请求头:-

  • 将文件从documentdirectory移动到子目录的简单脚本不起作用 移动失败,错误为:操作无法完成。(可可错误4。) 我用Xcode的模拟器来尝试它。下面的函数返回true,因为文件存在于DocumentDirectory中。此外,destinationfolder存在,destinationfolder为空。 /Users/RWollenSchlaeger/Library/Develope

  • 当我试图将一个文件从Angular 5.2上传到Laravel5.5应用程序时,我遇到了一个奇怪的行为。文件数据在服务器端不可见/不可访问。 我试过不同的头和方法,但似乎都失败了- HTML: 浏览器的开发人员工具显示提交了以下有效负载: 更新控制器代码真的超级简单 当我用一个对象替换formData时: null

  • AWS Java SDK 2.15.73(当前最新版本)。Java 1.8.222操作系统IBM AIX 7.1 开发一个将文件上传到S3 bucket的应用程序。 在Maven pom文件中: Stacktrace的开始: 异常在sendFileToAWSNoAuth=无法马歇尔请求JSON: BasUri不得为空。software.amazon.awssdk.core.exception.Sd