Не удалось загрузить файл размером более 2 ГБ (с процессом копирования) в Express. js (Node.js) - PullRequest
0 голосов
/ 06 апреля 2020

1.Сценарий

Нажмите кнопку загрузки => child_process.execSyn c (CopyFiles) => zip-файл => return res.send ('ok').
Но проблема в том, что если файл, который будет заархивирован, большой, он говорит, что не удалось загрузить.

Я устанавливаю тайм-аут и неограниченный размер в nginx config и BodyParser (json + urlencode для расширенного: true & предел: 5 МБ).

Нужно ли менять конфигурацию больше, чем сейчас? Кажется, он хорошо работает в локальном режиме, копирует файлы и архивирует должным образом на Prod Server, но просто говорит, что не может загрузить. И если я заставляю открыть страницу, она бесконечно повторяет одинаковые логики c.


Я использую nginx, ec2, nuxt, express. js. Не удается загрузить ответ, ошибка сети.

#copy file
files.forEach(file=> {
    return execSync(`cp ${folder}/${name} ${path}/images`)
})

#make ctx
await files.forEach(file=>{
  const canvas = createCanvas(file.width, file.height)
  const ctx = canvas.getContext("2d")

  labels.forEach(label => {
    ctx.beginPath()
    label.points.forEach(point => ctx.lineTo(point.x, point.y))
    ctx.closePath()
    ctx.fill()
  })

  const stream = canvas.createJPEGStream()
  const out = fs.createWriteStream(destination)
  stream.pipe(out)
  return new Promise(resolve => {
    out.on("finish", resolve)
  })

#zip
  execSync(
    `cd ${DSPath}/.. ;zip -r ${issue.id}_${now}.zip ./${issue.id}_${now}`,
  )

#download and remove file
  return res.download(`${path}/../file_name.zip`, err =>
      execSync(`cd ${DSPath}/.. ;rm -rf ./${issue.id}_${now}.zip ./${issue.id}_${now}/`))

#nginx
   sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    client_max_body_size 0;
    proxy_max_temp_file_size 0;
    proxy_buffering off;
    server_names_hash_bucket_size 256;
    send_timeout 1800;
    proxy_read_timeout 5000;
    proxy_send_timeout 5000;
    proxy_connect_timeout 5000;
    fastcgi_read_timeout 5000;
    proxy_cache off;
    proxy_set_header Connection '';
    chunked_transfer_encoding off;```


    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_min_length 10240;
    gzip_proxied no-cache no-store private expired auth;
    gzip_comp_level 9;
...