Strapi 上传的文件未在网站上显示

Strapi uploaded files are not displaying on website

我有很多文件存储在upload_file collection 和mongodb 中,它们与相关内容类型有关系。但是,当我打开 Strapi CMS UI 时,我看不到附加在其内容类型上的文件。

我正在使用 Strapi v3.4.6 — 社区版。

第一张图片显示的是我的 upload_file collection 项。其关系如红圈所示

第二张图片显示的是我的主要内容类型 collection 项目。你看到它的 id 和 upload_file rel id 是匹配的。

但在 Strapi UI 中,此文件未链接到模型。该文件存在于 Strapi 的文件系统中。然而它是不可见的

我可以手动添加这个文件,但是有什么快速的方法吗?

将图片上传到 strapi 时,请确保您的 formData 包含这些字段

const formData = new FormData();
formData.append('files', image);    
formData.append('ref', 'contentTypeName');
formData.append('refId', dataItemId); 
formData.append('field', 'image'); 

您需要迁移数据库。我们用一个基本的脚本解决了。

运行 http://localhost:3000/migrate

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017";
var dbName = "YOURDBNAME";
const express = require('express')
const app = express()
const port = 3000
var _db;
var _dbo;

var tables = {
    "table1": "TabLE1",
    "table2": "TABle2",
}

app.get('/migrate', (req, res) => {
  res.send('Started!')
  
  _dbo.collection("upload_file").find({}).toArray(function(err, result) {
    if (err) throw err;
    result.forEach(function (item) {
      if (item.related.length > 0) {
        var related = item.related[0];
        var query = { '_id': related.ref };
        var newvalues = { $set: {} };
        newvalues.$set[related.field] = item._id;
        var tableName = related.kind.toLowerCase();
        _dbo.collection(tables[tableName]).updateOne(query, newvalues, function(err, res) {
          if (err) throw err;
          console.log(res != null ? res.ops : null);
        });
      }
    })
    // db.close();
  });
})


MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  _dbo = db.db(dbName);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

// Run http://localhost:3000/migrate