【问题标题】:Images are uploaded but not visible in UI => sails js图片已上传但在 UI 中不可见 =>sails js
【发布时间】:2018-03-01 06:50:17
【问题描述】:

图像已上传到资产文件夹中,但在 UI 中不可见。当我重新启动服务器时,我可以看到图像。

问题:图像仅存储在资产中,而未存储在.tmp 文件中。

重启服务器时,.tmp 会读取 assets 文件夹中的所有文件,但在上传图片时不会发生。

这就是我面临的情况。

这是我试图解决它的代码:

var file = req.file('logo'); 
file.upload({ dirname: '../../assets/images' }, function onUploadComplete (err, files) { 
    if (err) { 
        console.log("something went wrong") ;
    } else { 
        console.log("File has uploaded successfully");
    }
});

【问题讨论】:

  • var file = req.file('logo'); file.upload({ dirname: '../../assets/images' }, function onUploadComplete(err, files) { if(err){ console.log("出了问题") }else{ console.log( “文件已成功上传”) } }) 文件上传后,我尝试在浏览器中读取文件的位置,如下 localhost:1337/images/fileName.png 但它没有显示图像。当我重新启动项目时,它会显示图像。
  • 请将代码和解释编辑成问题本身

标签: node.js sails.js


【解决方案1】:

您在服务器重新启动后看到该文件的原因是因为繁重的任务将资产复制到 .tmp 文件夹中。因此,您可能需要做一些事情来解决您的问题:

  1. 在 onUploadComplete 回调中自行将文件复制到 .tmp 文件夹。
  2. 设置 grunt 以监视更改,但我认为这不是生产的好习惯。
  3. 上传时将您的文件从服务器移动到其他存储库服务(例如,我使用 AWS 的 S3 服务)。顺便说一句,我认为这是最好的选择,因为您将静态资产与上传的内容分离 - 如果您需要重新部署服务器,您可能会丢失上传的图片。
  4. 您始终可以将图像保存为数据库中的 base64 编码字符串,因此不会出现路径、文件系统操作等问题,但是您会给数据库带来大量负载。

【讨论】:

  • 当我通过“sails lift”运行代码时,应用程序本身执行将图像从资产复制到 .tmp 文件夹的过程。但是当我运行命令“永远启动 app.js”时,它并没有发生。我不知道为什么当我运行命令“永远启动 app.js”时 grunt 任务没有处理文件
猜你喜欢
  • 2020-11-06
  • 1970-01-01
  • 2019-04-12
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
相关资源
最近更新 更多