本地测试没问题,生产环境文件超过1M居然报跨域错误
来源:5-1 图片资源与服务器交互全流程解析
慕容2059036
2020-12-30 13:42:59
# 具体遇到的问题
文件存储接入的是腾讯云的
本地环境:测试4M图片上传没问题,已确认使用的是远程存储,非本地
生产环境:1M以内没有问题,1M以上就出现跨域问题
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
本地环境+腾讯云 测试4M文件上传,正常
生产环境+腾讯云 测试4M文件上传,错误
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
在这里输入代码,可通过选择【代码语言】突出显示
#文件上传配置
lin:
file:
# 文件服务域名
domain: https://*******存储桶地址********/
# 排除文件类型
exclude:
# 包括文件类型
include:
- .jpg
- .png
- .jpeg
- .JPG
- .PNG
- .JPEG
# 文件最大数量
nums: 10
# 服务器文件路径
serve-path: assets/**
# 单个文件最大体积
single-limit: 10MB
# 本地文件保存位置
store-dir: assets/
spring:
servlet:
multipart:
#设置单个文件上传大小
max-file-size: 10MB
#设置总上传的数据大小
max-request-size: 50MBpackage io.github.talelin.latticy.extension.file;
import io.github.talelin.latticy.module.file.Uploader;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
/**
* 文件上传配置类
*
* @author Juzi@TaleLin
*/
@Configuration
public class UploaderConfiguration {
/**
* @return 本地文件上传实现类
*/
@Bean
@Order
@ConditionalOnMissingBean
public Uploader uploader(){
return new TencentUpLoader();
}
}package io.github.talelin.latticy.extension.file;
import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosClientException;
import com.qcloud.cos.model.ObjectMetadata;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.region.Region;
import io.github.talelin.latticy.module.file.AbstractUploader;
import io.github.talelin.latticy.module.file.FileConstant;
import io.github.talelin.latticy.module.file.FileProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.ByteArrayInputStream;
/**
* @author Created by 付俊杰
* email:1025461682@qq.com
* phone:17684220995
* 2020年09月19日12:08:59
*/
@Slf4j
public class TencentUpLoader extends AbstractUploader {
@Autowired
private FileProperties fileProperties;
private COSClient cosClient;
private String secretId = "****************";
private String secretKey = "****************";
private String bucket = "***********";
private ClientConfig clientConfig;
private COSCredentials cred;
@Override
protected FileProperties getFileProperties() {
init();
return fileProperties;
}
private void init() {
cred = new BasicCOSCredentials(secretId, secretKey);
Region region = new Region("ap-nanjing");
clientConfig = new ClientConfig(region);
}
/**
* 主要的业务
*/
@Override
protected boolean handleOneFile(byte[] bytes, String newFilename) {
cosClient = new COSClient(cred, clientConfig);
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("image/jpeg");
PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, newFilename, byteInputStream, metadata);
try {
cosClient.putObject(putObjectRequest);
return true;
} catch (CosClientException ex) {
log.error("tencent upload file error: {}", ex.getMessage());
return false;
} finally {
cosClient.shutdown();
}
}
/**
*
*/
@Override
protected String getStorePath(String newFilename) {
return fileProperties.getDomain() + newFilename;
}
@Override
protected String getFileType() {
return FileConstant.REMOTE;
}
}
1回答
慕容2059036
提问者
2020-12-30
是nginx的文件大小限制问题
相似问题