gpt4 book ai didi

javascript - 如何使用 chai-http 放置 PDF?

转载 作者:行者123 更新时间:2023-12-03 04:49:13 24 4
gpt4 key购买 nike

好吧,这是一个非常全面的问题,因为我需要了解流程和最佳实践。欢迎批评指正!

我正在为 PDF-to-image API 端点编写测试。因此,我需要 PDF 发送到端点。端点将其保存在本地、进行转换、将图像序列存储在 S3 存储桶中,然后发回 URL 数组。但是,由于我编写此测试主要是为了协助开发,所以这些都还没有发生。我只是想确保我可以在端点接收 PDF 并保存它。

查看下面的测试代码:

// testing dependencies
const chai = require("chai")
const chaiHttp = require("chai-http")
const should = chai.should()
const server = require('./../index.js')

chai.use(chaiHttp)

// utility dependencies
const fs = require('fs')

describe("PDF upload", () => {
it("should PUT my pdf", (done) => {
fs.readFile('./content/pdf/lockheed.pdf', (err, res) => {
if (err) { console.error(err) }
else {
chai.request(server)
.put('/v1/convert-pdf')
.set('Content-Type', 'application/pdf')
.send({ pdf: res })
.end((err, res) => {
console.log("got the res")
if (err) { console.error(err) }
else { console.log(res.body) }

done()
})
}
})
})
})

在设置 Content-Type header 之前,我只需从服务器获取 413(请求太大)。我已经将所有超时和最大请求​​大小设置得很大,所以这真的不应该成为问题。但现在我在标题中有 application/pdf ,我收到此错误:

Uncaught TypeError: "string" must be a string, Buffer, or ArrayBuffer

这更有帮助,让我找到了这个 SO它将文件传送给请求。但是,我真的不确定如何通过 chai-http 来完成此操作,以便我的服务器可以成功获取 pdf 并将其保存到本地文件。

最佳答案

要通过chai-http上传文件,请使用attach而不是send。这是一个例子:

describe("PDF upload", () => {
it("should PUT my pdf", (done) => {
chai.request(server)
.put('/v1/convert-pdf')
.set('Content-Type', 'application/pdf')
.attach('fileField', './content/pdf/lockheed.pdf', 'lockheed.pdf')
.end((err, res) => {
console.log("got the res");
if (err) {
console.error(err)
} else {
console.log('success');
console.log(res.body)
}
done();
});
})
})

实际上,chai-http 遵循与 SuperAgent 相同的 API。请查看document了解更多详情。

关于javascript - 如何使用 chai-http 放置 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com