用Strapi连接上传的文件和相关模型

时间:2019-07-01 13:37:54

标签: reactjs sqlite 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": {}
    }

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

2 个答案:

答案 0 :(得分:1)

将模型链接到文件

您必须使用两个步骤来创建过程:

  1. 创建File-> POST /upload
  2. Jobs-> id中使用FileResponse创建POST /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

将文件链接到条目

您也可以将文件链接到创建的条目,然后先创建Jobs,然后将链接ResumeFilerefId中添加的新字段(例如Jobs链接起来)( Jobs -> id),ref(在您的情况下为jobsfield=resume

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

答案 1 :(得分:0)

要上传文件并将其链接到条目时。 如果尚未完成,则必须首先创建该条目。 然后通过发送条目的图像信息来上传文件。

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