Commit 4911c4df by 李传峰

Merge branch 'fixbug/webp' into 'master'

bug: [none] 解决华为云webp格式图片浏览器访问默认下载问题

See merge request rays/pcloud-common-parent!271
parents adf5f217 a5523fc5
......@@ -14,6 +14,7 @@ import com.huawei.mpc.model.transcoding.QueryTranscodingRequest;
import com.huawei.mpc.model.transcoding.QueryTranscodingResponse;
import com.huawei.mpc.model.transcoding.TextWatermark;
import com.obs.services.ObsClient;
import com.obs.services.internal.utils.Mimetypes;
import com.obs.services.internal.utils.ServiceUtils;
import com.obs.services.model.DownloadFileRequest;
import com.obs.services.model.DownloadFileResult;
......@@ -47,6 +48,7 @@ import com.pcloud.common.utils.rsa.MD5;
import com.pcloud.common.utils.string.StringTools;
import com.pcloud.common.utils.string.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -63,10 +65,13 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import cn.hutool.core.codec.Base64;
import lombok.SneakyThrows;
import javax.validation.constraints.NotNull;
/**
* @描述:
* @作者:zyj
......@@ -208,7 +213,8 @@ public class OssUtils {
ObsClient client = getOSSClient(bucketName);
OSSFileDO ossFileDO = null;
try {
client.putObject(bucketName, objectKey, is);
// fixbug 华为云 webp 默认打开即下载问题
client.putObject(bucketName, objectKey, is, getObjectMetadata(objectKey));
ossFileDO = new OSSFileDO(AliyunConstant.getOssRegion(bucketName), bucketName,
URLEncoder.encode(objectKey, "utf-8"));
is.close();
......@@ -226,6 +232,23 @@ public class OssUtils {
}
/**
* 若上传时 Content-Type 是 application/octet-stream 或者 multipart/form-data
* 则文件地址打开默认时下载的 参考{@link Mimetypes#getMimetype(String)}
*/
private static ObjectMetadata getObjectMetadata(@NotNull String objectKey) {
int lastPeriodIndex = objectKey.lastIndexOf(".");
if (lastPeriodIndex > 0 && lastPeriodIndex + 1 < objectKey.length()) {
String ext = objectKey.substring(lastPeriodIndex + 1);
if (StringUtils.equalsIgnoreCase("webp", ext)) {
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("image/webp");
return metadata;
}
}
return null;
}
/**
* 断点续传上传文件到aliOSS
*/
@SneakyThrows
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment