Php AWS为S3存储桶中的资产预先指定的url

Php AWS为S3存储桶中的资产预先指定的url,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我们将内容上传到S3私有bucket。上传内容后,我们通过预先签名的url访问它们。当我们通过浏览器访问url时,图像工作正常。但当我们尝试访问主权财富基金和PDF时,浏览器会提示下载内容。 当我们试图从公共存储桶访问资产时,也不会发生这种情况 这是默认行为还是有解决方案 我查一下 获取url的代码 public function getPresignedUrl($filename, $expires,$bucket=NULL) { if($bucket==NULL){

我们将内容上传到S3私有bucket。上传内容后,我们通过预先签名的url访问它们。当我们通过浏览器访问url时,图像工作正常。但当我们尝试访问主权财富基金和PDF时,浏览器会提示下载内容。 当我们试图从公共存储桶访问资产时,也不会发生这种情况

这是默认行为还是有解决方案

我查一下

获取url的代码

    public function getPresignedUrl($filename, $expires,$bucket=NULL)
{
    if($bucket==NULL){
        $bucket=$this->bucket;
    }
    $command = $this->getClient()->getCommand('GetObject', ['Bucket' =>$bucket , 'Key' => $filename]);
    $request = $this->getClient()->createPresignedRequest($command, $expires);
    return (string) $request->getUri();
}
===========================================更新1=================================

我们使用AWS sdk的“上传”功能来上传SWF、PDF和MP4

    public function upload($filename, $source, $acl = null, array $options = [])
{

    if($this->getClient()->upload(
        $this->bucket,
        $filename,
        $source,
        !empty($acl) ? $acl : $this->defaultAcl,
        $options
    )){
        return true;
    }else{
        return false;
    }
}

谢谢

上传文件时,如果未设置内容类型,S3客户端将尝试确定正确的内容类型。 如果未提供任何内容类型且无法通过文件名确定,则将使用默认的内容类型,
“应用程序/八位字节流”
,从而浏览器提示您下载该文件

看看


正如Vamsi所说,我上传mime类型的内容已经解决了我的问题

public function uploadPut($filename, $source, $acl = null,$mime=null,$storage='REDUCED_REDUNDANCY', array $options = []){
   $result = $this->getClient()->putObject(array(
        'Bucket'       => $this->bucket,
        'Key'          => $filename,
        'SourceFile'   => $source,
        'ContentType'  => $mime,
        'ACL'          => $acl,
        'StorageClass' => $storage,
    ));
}
调用函数

uploadPut($file->name, $file->name, null, $file->mimeType);

谢谢我会检查这个并让你知道。我已经更新了问题。我们正在使用AWS sdk的上传功能。该函数中没有涉及mime类型,但put函数接受mime类型
uploadPut($file->name, $file->name, null, $file->mimeType);