uniapp文件上传大于1M报错

uniapp yekong

在uniapp中上传文件时遇到大于1M报错的问题,通常与服务器配置有关。这种情况下,错误可能表现为跨域错误(CORS)或413错误(请求实体过大)。以下是针对这两种情况的解决方案:

跨域错误(CORS)

当上传较大的文件时报跨域错误,可能是因为请求被浏览器的同源策略拦截。如果错误信息中提到"No 'Access-Control-Allow-Origin' header is present on the requested resource",说明服务器没有正确设置CORS策略来允许来自不同源的请求。

解决方案

  • 需要在服务器端添加适当的CORS头部,允许来自不同源的请求。具体来说,需要设置Access-Control-Allow-Origin头部来指定哪些源可以访问资源。
  • 如果是使用Nginx作为服务器,还需要检查是否有client_max_body_size的设置。如果上传的文件大小超过了这个限制,也会导致上传失败。需要在Nginx配置文件中增加或修改client_max_body_size的值,例如设置为20M以允许最大20MB的文件上传。

413错误(请求实体过大)

当文件大小超过服务器允许的最大值时,会返回413错误。这通常是由服务器配置决定的。

解决方案

  • 对于Nginx服务器,如上所述,需要在Nginx的配置文件(通常是nginx.conf)中设置client_max_body_size指令,以允许更大的文件上传。例如,将其设置为20M来允许最大20MB的文件上传。
  • 如果使用的是其他类型的服务器,也需要查找相应的配置选项来增加允许的请求体大小。

使用uni.uploadFile方法

如果你在使用uni.request方法上传文件时遇到问题,可以尝试使用uni.uploadFile方法。uni.uploadFile是专门用于文件上传的API,它可能更适合处理文件上传的情况。

uni.uploadFile({
  url: '上传接口url', // 服务器地址
  filePath: '文件路径',
  name: 'file', // 必填,后端通过这个字段接收文件
  success: (uploadFileRes) => {
    console.log(uploadFileRes.data);
  },
  fail: (error) => {
    console.error(error);
  }
});

总之,解决上传文件大于1M报错的问题,需要从调整服务器配置和使用适合的API两方面来考虑。

喜欢