Nodejs和大张旗鼓的文件上传:TypeError:无法提取

时间:2019-02-07 15:45:36

标签: node.js express file-upload swagger swagger-ui

编辑

我发现了自己的错误。 我收到“ TypeError:无法提取”,因为我没有在控制器函数中发回任何东西。因此,用res.json({“ message”:“ File Uploaded”})替换console.log(“ OK”);解决这个问题。 但是,我的图像仍然没有上传,这是因为我没有在要存储图像的路径中使用__dirname。我在app.js文件中设置了__dirname。


我正在尝试使用express-fileupload npm软件包在服务器中上传文件。使用Swagger UI进行测试时,出现以下错误:“ TypeError:无法提取”,并且我的文件未在我的public / images文件夹中上载

这是我的招摇:

  /images:
    x-swagger-router-controller: images
    post:
      summary: Uploads a file.
      operationId: upload
      consumes:
        - multipart/form-data
      parameters:
        - in: formData
          name: upfile
          type: file
          description: The file to upload.
      responses:
        "200":
          description: Success
          schema:
            $ref: "#/definitions/SuccessResponse"
        default:
          description: Error
          schema:
            $ref: "#/definitions/ErrorResponse"

这是我的图片控制器:

function upload(req, res, next) {

  let uploadFile = req.files.upfile;
  let fileName = uploadFile.name;
  uploadFile.mv( `../../public/images/${fileName}`, function (err) {
         if (err) {
         console.log("error", err)
         }
         console.log("OK")
         })
}

   module.exports = {
    upload,
};

我的“确定”消息确实会在我的控制台中打印出来。

有人知道如何解决吗?

1 个答案:

答案 0 :(得分:0)

这是因为有时您的IIS绑定的HTTPS SSL证书会自动转到“ 未选中”。see here,因此您必须再次手动选择IIS Express开发证书的SSL证书。

以下,我提到了操作方法以及附件和图像:

  • 打开IIS单击“默认网站”

  • 在右侧角落,您将看到一些设置,单击“绑定”

  • 您将获得一个“站点绑定”窗口

  • 然后您将获得http和https详细信息

  • ,其中单击“ https”并单击“编辑”

  • 然后您将获得另一个窗口编辑站点绑定

  • 在该窗口中检查SSL证书

  • 如果未选择SSL证书,请选择IIS Express开发证书

  • 然后停止并启动IIS

没问题。