使用 Strapi 将上传的文件与相关模型连接起来

Connect uploaded file with related model with Strapi

我正在使用 Strapi、Sqlite3 和 React。 我想发送附有文件的表格。

我有一个 Job 模型,它看起来像这样:

{
  "connection": "default",
  "collectionName": "jobs",
  "info": {
    "name": "job",
    "description": ""
  },
  "options": {
    "increments": true,
    "timestamps": true,
    "comment": ""
  },
  "attributes": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "resume": {
      "model": "file",
      "via": "related",
      "plugin": "upload"
    },
    "jobcategory": {
      "model": "jobcategory",
      "via": "jobs"
    }
  }
}

我正在使用 submitCareer 方法发送文本输入,并且 uploadFile 用于上传:

export async function submitCareer(url, formValues) {
    try {
        const entries = await rootUrl.createEntry(url, formValues);
        return entries;
    } catch (err) {
        console.log(err);
    }
}

export async function uploadFile(formValues) {
    try {
        const upload = await rootUrl.upload(formValues);
        return upload;
    } catch (err) {
        console.log(err);
    }
}

这是我的职业组件中的用法:

const handleSubmit = (event) => {
        const formData = new FormData();
        formData.append("files", fileInput.current.files[0]);   

        submitCareer('jobs', values);

        uploadFile(formData);


        setValues({
            firstName: '',
            lastName: '',
            email: '',
            resume: null
        })

        event.preventDefault();
    }

我收到这样的回复:

{
        "id": 66,
        "firstName": "John",
        "lastName": "Doe",
        "email": "john@gmail.com",
        "jobcategory": null,
        "lname": null,
        "created_at": 1561988031279,
        "updated_at": 1561988031279,
        "resume": {}
    }

那么,如何将简历与工作模型联系起来?

当您想上传文件并将其link 到条目时。 如果尚未完成,则必须先创建条目。 然后通过发送参赛作品的图片信息上传您的文件。

所有文档都在这里https://strapi.io/documentation/3.0.0-beta.x/guides/upload.html#examples

将模型链接到文件

您必须通过以下两个步骤创建流程:

  1. 创建 File -> POST /upload
  2. FileResponse -> POST /jobs.
  3. 使用 id 创建 Jobs

示例:

    const handleSubmit = (event) => {
      const formData = new FormData();
      formData.append("files", fileInput.current.files[0]);
      resumeUploadFile = await uploadFile(formData);

      const jobsInput = {...jobs, ...{resume: resumeUploadFile.id}}
      await submitCareer('jobs', jobsInput);

      setValues({
        firstName: '',
        lastName: '',
        email: '',
        resume: null
      })

      event.preventDefault();
    }

https://strapi.io/documentation/3.0.0-beta.x/guides/upload.html#file-upload

将文件链接到条目

您可以 link 将文件也写入已创建的条目,然后您先创建 Jobs 然后 link 上传 ResumeFile 添加了新字段,例如 refId 来自 Jobs (Jobs -> id),在你的情况下 ref jobsfield=resume

https://strapi.io/documentation/3.0.0-beta.x/guides/upload.html#examples