以下代码按预期工作:它读取已使用 multer [https://github.com/expressjs/multer] 上传的文件并将其流式传输到 gridfs。我也能够从 gridfs 中蒸出它。
var target = gfs.createWriteStream({
filename: fileItem.originalname,
mode: 'w',
metadata: metaData
});
fs.createReadStream(tempFile)
.on('end', function () {
console.log('File read and stored');
})
.on('error', function (err) {
console.log('Error handling file ' + err);
})
.pipe(target);
// Attach new file to document list
target.on('close', function (file) {
filesUploadedList.push(file._id);
Run Code Online (Sandbox Code Playgroud)
fileItem是通过迭代req.files.file上传的文件获得的。
但是,我正在尝试找出 multer 的 inMemory 选项。如果我将此设置为 true,fileItem则将填充缓冲区。请注意,如果没有此选项, 的缓冲区/内容fileItem是空的,这就是为什么在上面的代码中从fileItem.location.
用内容填充目标的最佳方法是什么?该fs.createReadStream做的那一刻管道。
谢谢。
J
我有以下设置:
Jenkins运行docker-compose的环境,但是我需要将环境变量传递给yml文件:
样本docker-compose.yml
version: '2'
services:
logon_server:
build: .
image: my_server:0.0.1
ports:
- "9200:9200"
command: ${DOCKER_CMD_EXEC}
networks:
- my_ntwrk
networks:
my_ntwrk:
Run Code Online (Sandbox Code Playgroud)
当我从Mac上的shell提示符运行以下脚本时,我可以传递要执行的不同命令,并且一切正常:
exec-tests.sh
#!/bin/bash
chmod 755 docker/exec-*.sh
# Setup env variables
export DOCKER_CMD_EXEC=/ci_e2e.sh
# Optional: record current versions
docker -v && docker-compose -v
echo `whoami`
echo `sudo -E -u admin printenv`
# Build, deploy and run E2E test cases
sudo -E -u admin docker-compose up --no-color --abort-on-container-exit
Run Code Online (Sandbox Code Playgroud)
当我在jenkins作业中运行脚本时,在“构建环境”->“执行Shell”->“命令”下,这是我所谈论的图像:
我收到以下错误:
The DOCKER_CMD_EXEC variable is not set. Defaulting to a blank …Run Code Online (Sandbox Code Playgroud)