NodeJS에 파일을 업로드 할 수있는 API가 있으며 서버 측에서 connect-busboy
패키지를 사용하여 수신합니다.connect-busboy를 사용하여 파일 업로드를위한 Nginx 구성
: 그러나, 나는 npm start
으로 API를 시작하고 직접 API에 파일을 업로드 할 때
var app = require('express')();
var busboy = require('connect-busboy');
app.use(busboy({
highWaterMark: 2 * 1024 * 1024,
limits: {
fileSize: 1024 * 1024 * 1024 // 1 GB
},
immediate: true
}));
var busboyHandler = function (req, res) {
if (req.busboy) {
req.busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
console.log('received file ', req.path, fieldname, file, filename, encoding, mimetype);
});
req.busboy.on('field', function(key, value, keyTruncated, valueTruncated) {
console.log('field..', key, value, keyTruncated, valueTruncated);
});
req.busboy.on('finish', function() {
console.log('busboy finished');
});
}
};
app.post('api/documents/files', busboyHandler);
이 잘 작동을 할 때 나는 Nginx Docker를 구성한다. 그것은 정말로 작은 파일들에 대해 작동하지만, 대부분의 파일들에 대해서는 성공적으로 업로드되지 않는다.
user nobody nogroup;
worker_processes auto; # auto-detect number of logical CPU cores
events {
worker_connections 512; # set the max number of simultaneous connections (per worker process)
}
http {
include mime.types;
client_max_body_size 100M;
client_body_buffer_size 256k;
upstream api_doc {
server 192.168.2.16:4956;
}
server {
listen *:4000; # Listen for incoming connections from any interface on port 80
server_name localhost; # Don't worry if "Host" HTTP Header is empty or not set
root /usr/share/nginx/html; # serve static files from here
client_max_body_size 100M;
client_body_buffer_size 256k;
location /api/documents {
proxy_pass http://api_doc;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
내가
received file
로그를 볼 수 있지만, 그것은 Nginx에 아래 때, Nginx에없이 직접 API를 호출 할 때와는 달리
busboy finished
로그가 결코 : 여기
내
nginx.conf
파일에서 발췌 한 것입니다.
이 Nginx 구성을 변경하려고했지만 작동하지 않았습니다. client_max_body_size
, client_body_buffer_size
. 필자는 API가 전체 파일 대신에 큰 파일이나 모든 청크 파일의 덩어리 만받는 것처럼 보입니다.
도움을 주시면 감사하겠습니다.
덕분에, 사이먼
왜 여기에 downvote? – simdrouin