如何使用 Node 中的 supertest 包从同一目录附加多个文件?
How to attach multiple files from the same directory with supertest package in Node?
我想使用 supertest 将大约 100 个文件附加到 POST 请求中,但我还没有找到任何方法来做到这一点。
const supertest = require('supertest);
const fs = require('fs');
const { promisify } = require('utils');
const request = supertest('http://localhost:3000');
const readdir = promisify(fs.readdir);
(async () => {
try {
const files = await readdir(path.resolve(__dirname, '/path/to');
request
.post('/upload')
.attach('file', files)
.end((response => {
console.log(response);
});
} catch(err) => {
console.error(err);
}
)();
给定以下代码,每次要在请求中发送 fileN 时,请求都需要链接附加方法,所以我想知道如何递归附加使用 fs 节点核心模块
同一文件夹内的每个文件
您可能只想使用 supertest 和 Promise.all 提出几个单独的请求。您可以使用 globby 获取文件列表,例如。没有异步可能会更直接,除非你在其他地方需要结果。
const files = glob(path.resolve(__dirname, '/path/to'));
const requests = files.map((file) => {
return request
.post('/upload')
.attach('file', file)
.end((response => {
console.log(response);
});
});
Promise.all(requests).then(console.log('done')).catch(console.error);
supertest
通过测试功能扩展了 superagent
并且工作方式相同。 request.post('/upload')
创建请求实例并且可链接。实例方法 return 用于链接的实例本身:
const requestInstance = request.post('/upload');
requestInstance === requestInstance.attach('file', ...);
supertest
和 superagent
是可行的,当它与 async..await
:
一起使用时,最好将结果链接为正确控制流的承诺
try {
const files = await readdir(path.resolve(__dirname, '/path/to');
let requestInstance = request.post('/upload');
for (const file of files) {
// no need to reassign requestInstance because it's same instance
// requestInstance = requestInstance.attach('file', file);
requestInstance.attach('file', file);
}
const response = await requestInstance;
} catch (err) {
console.error(err);
}
我想使用 supertest 将大约 100 个文件附加到 POST 请求中,但我还没有找到任何方法来做到这一点。
const supertest = require('supertest);
const fs = require('fs');
const { promisify } = require('utils');
const request = supertest('http://localhost:3000');
const readdir = promisify(fs.readdir);
(async () => {
try {
const files = await readdir(path.resolve(__dirname, '/path/to');
request
.post('/upload')
.attach('file', files)
.end((response => {
console.log(response);
});
} catch(err) => {
console.error(err);
}
)();
给定以下代码,每次要在请求中发送 fileN 时,请求都需要链接附加方法,所以我想知道如何递归附加使用 fs 节点核心模块
同一文件夹内的每个文件您可能只想使用 supertest 和 Promise.all 提出几个单独的请求。您可以使用 globby 获取文件列表,例如。没有异步可能会更直接,除非你在其他地方需要结果。
const files = glob(path.resolve(__dirname, '/path/to'));
const requests = files.map((file) => {
return request
.post('/upload')
.attach('file', file)
.end((response => {
console.log(response);
});
});
Promise.all(requests).then(console.log('done')).catch(console.error);
supertest
通过测试功能扩展了 superagent
并且工作方式相同。 request.post('/upload')
创建请求实例并且可链接。实例方法 return 用于链接的实例本身:
const requestInstance = request.post('/upload');
requestInstance === requestInstance.attach('file', ...);
supertest
和 superagent
是可行的,当它与 async..await
:
try {
const files = await readdir(path.resolve(__dirname, '/path/to');
let requestInstance = request.post('/upload');
for (const file of files) {
// no need to reassign requestInstance because it's same instance
// requestInstance = requestInstance.attach('file', file);
requestInstance.attach('file', file);
}
const response = await requestInstance;
} catch (err) {
console.error(err);
}