【问题标题】:Upload a file with PUT/POST method on POSTMAN在 POSTMAN 上使用 PUT/POST 方法上传文件
【发布时间】:2018-02-27 04:20:09
【问题描述】:

我正在尝试将带有 POSTMAN 的文件上传到此 URL

http://localhost:3000/bucket/test/files/

并且应该在我的控制器中得到结果:

    put(request, response, args) {
    //HERE IN THE REQUEST.BODY 
    console.log(request.body)

    let fileManager = request.modules.VMFile;
    let mimeTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/x-icon', '  video/mpeg', 'text/html', 'video/x-msvideo', 'application/msword', 'application/pdf', 'application/vnd.ms-powerpoint', 'application/x-rar-compressed'];
    let maxFileSize = 4 * 1024 * 1024;

    fileManager.initUpload(mimeTypes, maxFileSize);

    fileManager.receive((files) => {

        fileManager.forEachFileContent(files, (file, content) => {

            minioClient.putObject(request.body.bucket, request.body.name, content, file.size, file.mimetype, function (err, etag) {
                response.setData("File uploaded").apply();
                return console.log(err, etag)
            })

        });
        fileManager.clearFilesFromTmp(files);
    });
}

在 POSTMAN 中我得到了这个:

标题上什么都没有,但我只能 PUT(或 POST,我试图用 POST 更改我的路由但同样的问题)名称和存储桶字段...我的文件字段上什么都没有...

【问题讨论】:

  • 如果是快递申请,需要写app.put(<URL_HERE>, handler_function)。您的代码 sn-p 不完整。
  • 它是一个基于express的私有API,但是我的sn-p可以工作
  • @Cupkek05 澄清一下,当邮递员通过网络发出请求时,您的控制器中什么也没得到?另外,你的标题不需要 content-length 和 content-type 吗?
  • @DanielLane 我不知道,因为我检查了一些他们主张让内容类型为空的主题,我会尝试一下
  • @Cupkek05 看起来大卫的建议可能对你有用,试试看。

标签: javascript node.js request postman


【解决方案1】:

在使用Postman 时,尤其是在您测试文件上传时,请确保,

  1. 标题中:
    • 标题中的Content-type 字段已设置为multipart/form-data
  2. 正文中:
    • form-data 选项应保留为默认值。
    • 从右侧的下拉列表中选择 File 选项而不是 text
    • 在占位符为key的文本框中键入File

【讨论】:

  • 使用 multipart-formdata 添加内容类型,感谢您的帮助
  • 如何使用 content-type: application/json 发送数据
  • @rammanoj 在“Headers”选项卡下(在 POSTMAN 中),您需要添加键“Content-Key”(如果您开始输入,您将获得自动建议),然后在下一个框中您可以提供“application /json"(同样,当你开始输入时,你会得到自动建议。希望这会有所帮助!
  • 谢谢!解决了我的问题。我失去了几个小时只是因为我没有做最后一点Type File in text box where placeholder is key.?‍♂️
  • 超级有帮助!!非常感谢!
【解决方案2】:

您可能做得对,但有时 POSTMAN 不能正常工作。我编写了一个 API 来接受文本和文件。
从 Postman 调用服务时。

  1. 我将Content-Type 设置为"application/json",将Accept 设置为"application/json"
  2. 在正文中,我传递了文本和文件 它不起作用,我尝试了多次。我关闭了邮递员和笔记本电脑。

第二天早上醒来又打了一次,它奏效了。下面是工作请求的图像。

【讨论】:

  • 上传时可能获取 user.png 大小?对这种情况有什么想法吗?
【解决方案3】:

当我尝试从表单数据上传图像时,会输出这些文字。什么原因,在哪里调整:
此文件不在您的工作目录中。您与之共享此请求的队友将无法使用此文件。为了让协作更轻松,您可以在“设置”中设置工作目录。

【讨论】:

  • 这看起来像是一个问题而不是一个答案。您应该删除它,而是通读原始问题的答案和 cmets。
【解决方案4】:

在使用 express-fileupload 时,并非所有 David 的回答都对我有用。简而言之,我在使用express-fileupload 时不需要Content-Type 标头。

注意,这些步骤适用于 npm / express-fileupload / Postman

  1. 确保标头Content-Type 已禁用。设置此项会强制 req.files 未定义。
  2. 根据 Davids 的回答,使用 form-data 并将 key 设置为您需要的任何值,然后上传文件。
  3. 如果你在你的快递应用中console.log(req.files.YOUR_KEY),你应该有一个包含上传文件的对象,在我的例子中是req.files.file

这是邮递员的样子(再次禁用Content-Type 标头):

这是使用console.log(req.files)时控制台中的输出:

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 2011-12-17
    • 2011-02-07
    • 2011-07-05
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2014-02-13
    • 2020-04-06
    相关资源
    最近更新 更多