【问题标题】:Connect uploaded file with related model with Strapi使用 Strapi 将上传的文件与相关模型连接起来
【发布时间】:2019-07-01 13:37:54
【问题描述】:

我正在使用 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": {}
    }

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

【问题讨论】:

    标签: reactjs sqlite strapi


    【解决方案1】:

    将模型链接到文件

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

    1. 创建File -> POST /upload
    2. idFileResponse创建Jobs -> 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,然后链接上传ResumeFile,并添加新字段,如JobsJobs -> id)的refIdJobs -> id)、ref在你的情况下jobsfield=resume

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

    【讨论】:

    • 我是这样做的: const jobData = await submitCareer('jobs', values);并在 FormData 上附加作业 ID:formData.append('refId', jobData.id);
    【解决方案2】:

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

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

    【讨论】:

    • 我尝试使用 refId,但无法获取自动递增的 Jobs 模型 ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2022-01-07
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    相关资源
    最近更新 更多