开发者社区> 问答> 正文

对于已经上传的文件,如何通过api修改http头的Content-Disposition

通过oss windows工具一次性上传了大量的文件到oss(文件名都是一串英文字母及数字的组合),默认的Content-Disposition信息是空的。
这样用户在下载文件的时候保存的文件名称是一串英文字母及数字的组合,能不能在用户下载的时候生成签名url时通过api设置当前Object的http头?
在产品文档里只找到了上传时添加http头的api,对oss已有文件如何设置http头?(在控制台里看到可以设置,有没有对应的api呢?)

展开
收起
懂懂 2015-12-15 14:44:17 7420 0
2 条回答
写回答
取消 提交回答
  • 回 2楼wood23的帖子
    感谢,已经在使用中
    2015-12-15 23:48:30
    赞同 展开评论 打赏
  • CopyObject 接口中,将Source Bucket  Dest Bucket,相同且 Source Object,Dest Object相同就是修改http的接口

    https://help.aliyun.com/document_detail/oss/user_guide/manage_object/copy_object.html?spm=5176.product8314910_oss.6.103.hjZR9j

    可以参考各个SDK中CopyObject接口

    -------------------------

    修改文件元信息(Object Meta)

    可以通过拷贝操作来实现修改已有文件元信息。如果拷贝操作的源文件地址和目标文件地址相同,都会直接替换源文件的文件元信息。
    PHP实现

    https://help.aliyun.com/document_detail/oss/sdk/php-sdk/manage_object.html

    /**
    * 修改文件元信息
    * 利用copyObject接口的特性:当目的object和源object完全相同时,表示修改object的文件元信息
    *
    * @param OssClient $ossClient OSSClient实例
    * @param string $bucket 存储空间名称
    * @return null
    */
    function modifyMetaForObject($ossClient, $bucket)
    {
        $fromBucket = $bucket;
        $fromObject = "oss-php-sdk-test/upload-test-object-name.txt";
        $toBucket = $bucket;
        $toObject = $fromObject;
        $copyOptions = array(
            OssClient::OSS_HEADERS => array(
                'Expires' => '2012-10-01 08:00:00',
                'Content-Disposition' => 'attachment; filename="xxxxxx"',
            ),
        );
        try{
            $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        print(__FUNCTION__ . ": OK" . "\n");
    }

    2015-12-15 14:55:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
Spring Boot2.0实战Redis分布式缓存 立即下载
CDN助力企业网站进入HTTPS时代 立即下载