uni-app 发布到服务器文件上传失败

发布于 1周前 作者 itying888 来自 Uni-App

uni-app 发布到服务器文件上传失败

1 回复

在 uni-app 中发布到服务器时,文件上传失败可能由多种原因引起。以下是一些常见问题的排查步骤和解决方案:


1. 检查服务器配置

  • 文件大小限制:确保服务器的 php.ininginx.conf 配置中,upload_max_filesizepost_max_size 足够大。
    • 例如:
      upload_max_filesize = 50M
      post_max_size = 50M
  • 上传目录权限:确保服务器上传目录的权限正确(通常为 755777),确保 Web 服务器用户(如 www-datanginx)有写权限。
  • 超时时间:如果文件较大,可能需要增加超时时间,例如:
    max_execution_time = 300
    max_input_time = 300

2. 检查 uni-app 代码

  • 上传接口 URL:确保上传接口的 URL 正确,且服务器支持跨域(如果需要)。
  • 文件类型和大小限制:在 uni-app 中检查文件类型和大小是否符合服务器要求。
    uni.chooseImage({
      count: 1,
      success: (res) => {
        const tempFilePaths = res.tempFilePaths;
        uni.uploadFile({
          url: 'https://your-server.com/upload',
          filePath: tempFilePaths[0],
          name: 'file',
          success: (uploadRes) => {
            console.log('上传成功', uploadRes.data);
          },
          fail: (err) => {
            console.error('上传失败', err);
          }
        });
      }
    });
  • 请求头:如果需要自定义请求头(如 Authorization),确保正确设置:
    uni.uploadFile({
      url: 'https://your-server.com/upload',
      filePath: tempFilePaths[0],
      name: 'file',
      header: {
        'Authorization': 'Bearer your-token'
      },
      success: (uploadRes) => {
        console.log('上传成功', uploadRes.data);
      },
      fail: (err) => {
        console.error('上传失败', err);
      }
    });

3. 服务器端代码检查

  • 接收文件逻辑:确保服务器端正确处理文件上传请求。
    • 例如,在 PHP 中:
      if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
          $tmpName = $_FILES['file']['tmp_name'];
          $fileName = $_FILES['file']['name'];
          move_uploaded_file($tmpName, 'uploads/' . $fileName);
          echo json_encode(['message' => '上传成功']);
      } else {
          echo json_encode(['error' => '上传失败']);
      }
  • 返回格式:确保服务器返回的格式是 uni-app 能够解析的(如 JSON)。

4. 网络问题

  • HTTPS 和 HTTP:如果服务器使用 HTTPS,确保 uni-app 的请求地址也是 HTTPS。
  • 跨域问题:如果 uni-app 和服务器不在同一个域名下,确保服务器开启了 CORS 支持。
    • 例如,在 Nginx 中:
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
      add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!