Upload image to strapi

你。 提交于 2020-06-23 02:40:12

问题


I would like to upload an image to strapi with a html file. When I run the code, I obtain the error: POST http://localhost:1337/upload 500 (Internal Server Error).

$.ajax({
    type: 'POST',
    url: 'http://localhost:1337/upload',
    datatype: 'image/jpeg',
    data: JSON.stringify(img),
    complete: function(product) {
        console.log('Congrats, your product has been successfully created: ', product.description);
    },
    fail: function(error) {
        console.log('An error occurred:', error);
    }
});

回答1:


As I can see forgetting to add multipart/form-data

mimeType: "multipart/form-data"

You can see documentation here

  1. Ensure that have send the request using multipart/form-data encoding
  2. The parameters allowed are:

    files: The file(s) to upload. The value(s) can be a Buffer or Stream.
    
    path: (optional): The folder where the file(s) will be uploaded to (only supported on strapi-upload-aws-s3 now).
    
    refId: (optional): The ID of the entry which the file(s) will be linked to.
    
    ref: (optional): The name of the model which the file(s) will be linked to.
    
    source: (optional): The name of the plugin where the model is located.
    
    field: (optional): The field of the entry which the file(s) will be precisely linked to.
    

Single file request

curl -X POST -F 'files=@/path/to/pictures/file.jpg' http://localhost:1337/upload

Linking files to an entry

For example that you have link image field in User model named avatar

{
 "files": "...", // Buffer or stream of file(s)

 "path": "user/avatar", // Uploading folder of file(s).

 "refId": "5a993616b8e66660e8baf45c", // User's Id.

 "ref": "user", // Model name.

 "source": "users-permissions", // Plugin name.

 "field": "avatar" // Field name in the User model.
}



回答2:


As of today, you can upload a file to strapi using axios with the following code. This is the handler of the input event on a file input.

onInput (files) {
  const axios = require('axios')

  const STRAPI_BASE_URL = 'http://localhost:1337'

  const formData = new FormData()
  formData.append('files', files)
  formData.append('ref', 'restaurant') // optional, you need it if you want to link the image to an entry
  formData.append('refId', 12345) // optional, you need it if you want to link the image to an entry
  formData.append('field', 'image') // optional, you need it if you want to link the image to an entry

  axios.post(`${STRAPI_BASE_URL}/upload`, formData)
}

I assume that you have a collection called restaurant with a field image of type file.

More on this here: https://strapi.io/documentation/v3.x/plugins/upload.html#upload-files



来源:https://stackoverflow.com/questions/51722625/upload-image-to-strapi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!