首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将PDF与chai-http放在一起?

如何将PDF与chai-http放在一起?
EN

Stack Overflow用户
提问于 2017-03-11 17:16:20
回答 1查看 2.7K关注 0票数 0

好吧,这是一个非常完整的问题,因为我需要了解过程和最佳实践。欢迎批评!

我正在为一个PDF-to-image API端点编写一个测试。因此,我需要put的PDF到endpoint。端点将在本地保存它,转换它,将图像序列存储在一个S3桶中,然后发送一个URL数组。但是,由于我编写这个测试主要是为了帮助开发,所以目前还没有这样的测试。我只想确保我能够在端点接收到PDF,并保存它。

查看下面的测试代码:

代码语言:javascript
复制
// 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头之前,我只需从服务器获得413 (请求太大)。我已经设置了我所有的超时和最大请求大小,所以这真的不应该是一个问题。但是现在头中有了application/pdf,我得到了以下错误:

代码语言:javascript
复制
Uncaught TypeError: "string" must be a string, Buffer, or ArrayBuffer

这更有帮助,并引导我使用这个所以,它将文件导入到请求中。但是,我真的不知道如何通过chai-http实现这一点,这样我的服务器就可以成功地获取并保存pdf到本地文件中。

EN

回答 1

Stack Overflow用户

发布于 2017-03-13 06:49:25

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

代码语言:javascript
复制
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。有关更多细节,请查看文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42738218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档