本地测试没问题,生产环境文件超过1M居然报跨域错误

来源:5-1 图片资源与服务器交互全流程解析

慕容2059036

2020-12-30 13:42:59

# 具体遇到的问题
文件存储接入的是腾讯云的

本地环境:测试4M图片上传没问题,已确认使用的是远程存储,非本地

生产环境:1M以内没有问题,1M以上就出现跨域问题
# 报错信息的截图
http://img.mukewang.com/climg/5fec1235095f50c213420368.jpg

# 相关课程内容截图

# 尝试过的解决思路和结果
本地环境+腾讯云  测试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: 50MB
package 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的文件大小限制问题

0

Java全栈工程师

从Java到全栈,开发带SKU的真实企业级电商项目(附赠整套UI框架,配套升级Vue3.0内容)

2067 学习 · 3050 问题

查看课程