huaweicloud / huaweicloud-sdk-java-obs

The OBS SDK for Java, which is used for accessing Object Storage Service
Other
131 stars 116 forks source link

临时URL访问obs, TemporarySignatureRequest怎么重写响应头 #116

Open lgwtonylgw opened 1 year ago

444200216 commented 1 year ago

通过设置QueryParams可以重写响应头

TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, huaWeiConfig.getExpireTime()); request.setBucketName(huaWeiConfig.getBucketName()); request.setObjectKey(remoteKey); Map<String, Object> queryParams = new HashMap<>(); queryParams.put("response-content-disposition", "attachment; filename=\"123.txt\""); request.setQueryParams(queryParams); TemporarySignatureResponse response = obsClient.createTemporarySignature(request); return response.getSignedUrl();

支持重写的key如下:ObsService.transGetObjectParams()中

void transGetObjectParams(GetObjectRequest request, Map<String, String> params) { if (null != request.getReplaceMetadata()) { if (ServiceUtils.isValid(request.getReplaceMetadata().getCacheControl())) { params.put("response-cache-control", request.getReplaceMetadata().getCacheControl()); }

        if (ServiceUtils.isValid(request.getReplaceMetadata().getContentDisposition())) {
            params.put("response-content-disposition", request.getReplaceMetadata().getContentDisposition());
        }

        if (ServiceUtils.isValid(request.getReplaceMetadata().getContentEncoding())) {
            params.put("response-content-encoding", request.getReplaceMetadata().getContentEncoding());
        }

        if (ServiceUtils.isValid(request.getReplaceMetadata().getContentLanguage())) {
            params.put("response-content-language", request.getReplaceMetadata().getContentLanguage());
        }

        if (ServiceUtils.isValid(request.getReplaceMetadata().getContentType())) {
            params.put("response-content-type", request.getReplaceMetadata().getContentType());
        }

        if (ServiceUtils.isValid(request.getReplaceMetadata().getExpires())) {
            params.put("response-expires", request.getReplaceMetadata().getExpires());
        }
    }

    if (ServiceUtils.isValid(request.getImageProcess())) {
        params.put("x-image-process", request.getImageProcess());
    }

    if (request.getVersionId() != null) {
        params.put("versionId", request.getVersionId());
    }

    if (request.getCacheOption() != null) {
        String cacheControl = request.getCacheOption().getCode() + ", ttl=" + request.getTtl();
        params.put("x-cache-control", cacheControl);
    }