Загрузить изображение в страпи
Я хотел бы загрузить изображение в strapi с HTML-файлом. Когда я запускаю код, я получаю сообщение об ошибке: 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);
}
});
3 ответа
Как я вижу, забыв добавить multipart/form-data
mimeType: "multipart/form-data"
Вы можете увидеть документацию здесь
- Убедитесь, что отправили запрос, используя кодирование multipart/form-data
Допустимые параметры:
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.
Запрос одного файла
curl -X POST -F 'files=@/path/to/pictures/file.jpg' http://localhost:1337/upload
Связывание файлов с записью
Например, у вас есть поле изображения ссылки в модели пользователя с именем аватар
{
"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.
}
На сегодняшний день вы можете загрузить файл в strapi, используя axios со следующим кодом. Это обработчик события ввода для файлового ввода.
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)
}
Я предполагаю, что у вас есть коллекция под названием restaurant
с полем image
типа файла.
Подробнее об этом здесь: https://strapi.io/documentation/v3.x/plugins/upload.html
Вот еще один способ использования
RestRequest
в Winforms с С#:
var client = new RestClient("http://my-strapi-server:1337/upload");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddFile("files", @"C:\temp\bryan.jpg");
request.AddParameter("ref", "Singer");
request.AddParameter("refId", "605fe0c8sakhasg4c40253a");
request.AddParameter("field", "logo");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);