【问题标题】:How to accessing React public folder from the server folder如何从服务器文件夹访问 React 公用文件夹
【发布时间】:2019-07-23 09:09:29
【问题描述】:

我想使用 multer NodeJs 上传图像以响应公共文件夹。它在开发中很好,但是当我部署它时,它不起作用。看起来 multer 无法上传/引用公共文件夹。

这是我的文件夹结构:

/client
   /public
      /img
.
.
.
/routes
   /api
      /employee.js
server.js

这是我所做的:

server.js

// Access public folder
app.use(express.static("client/public/img"))

employee.js

// Set storage engine
const storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, path.join(__dirname, "../../client/public/img/profilePicture"))
  },
  filename: (req, file, cb) => {
    cb(null, file.fieldname + path.extname(file.originalname))
  }
})

我从开发人员工具中看到了源代码,它没有上传文件,但它可以用于开发。

感谢您的帮助!

【问题讨论】:

    标签: javascript node.js reactjs express


    【解决方案1】:

    multer 可以从公用文件夹中获取引用,但您需要设置endpoint 或上传到公用文件夹的路径。例如要公开一个文件夹,你可以这样做: app.use('/endpoint/to/access/public/folder', express.static(path.resolve("client/public")))

    另外,您的 server.js 与您的 client 文件夹一样位于根文件夹中,因此您可以执行以下操作:

    app.use('/public', express.static(path.join(__dirname,'client/public')));

    【讨论】:

    • 根据你的回答,在multer中是不是这样:javascript ... destination: function(req, file, cb) { cb( null, path.join(__dirname, "../../endpoint/to/access/client/public/img/profilePicture") ) }, ... 是这样吗?
    • 不,使用 multer 您使用要上传文件的文件夹的绝对路径。 /endpoint/to/access/public/folder 用于访问您的公共静态文件夹和文件。例如,如果您的公用文件夹中有一个名为big-image.png 的文件,您可以让该文件访问http://localhost:3000/endpoint/to/access/public/folder/big-image.png,因为这是访问您的公用文件夹的端点。但是如果您想将文件上传到您的公用文件夹,您可以使用您的公用文件夹的绝对路径,就像在您的 employee.js 中一样
    • ".. 但是如果您想将文件上传到您的公用文件夹,您可以使用公用文件夹的绝对路径,就像在您的 employee.js 中一样”是的,这就是问题所在。我使用了绝对路径,但部署时不会上传。我在显示图像时没有任何问题,但是在上传图像时它没有工作,即使它有成功消息。
    猜你喜欢
    • 2019-12-28
    • 2017-04-21
    • 2018-11-25
    • 2019-01-17
    • 2019-09-10
    • 2018-06-06
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多