Envoyer des données (images + texte) à Directus

Bonjour,
J’essaie d’envoie les données de mon objet (name, description, images) sur Directus mais je n’y arrive pas, j’obtiens un {code: 400; message: Bad Request}. Voici une partie de code de la requête:

final request = http.MultipartRequest(‹ POST ›, Uri.parse(‹ $baseUrl$endPoint ›));

// Add headers
var headers = {
  "Authorization": "Bearer $token",
  "Content-Type": "multipart/form-data; charset=utf-8",
};
request.headers.addAll(headers);

// Add body

request.fields.addAll(data[‹ fields ›]);

for(final file in data['files']){
  request.files.add(await http.MultipartFile.fromPath(
    path.basename(file.path),
    file.path,
    filename: path.basename(file.path).split(".").first,
    contentType:
    MediaType(mimeType, path.basename(file.path).split(".").last),
  ));
}

// Send request
  http.StreamedResponse response = await request.send();

Merci de me venir en aide.

Hello,

je n’ai pas eu l’occasion de jouer avec les fichiers sur Directus mais d’après la Doc tu dois envoyer les fichiers 1 par 1 :

Un fichier est un objet, si tu veux ajouter un champ image à un modèle dans Directus tu as bien le type UUID (identifiant unique du fichier).

UUID que tu retrouve également dans la bibliothèque de fichiers de Directus
image

Dans la doc tu retrouve également la structure d’un item File

Pour résumer fonctionnellement tu upload tes fichiers et tu récupère leurs UUID (dans la réponse de la requête).


Ensuite tu peux créer tes items avec les UUID des fichiers dans ton champ fichiers.

Note : le type de champ fichiers est une relation plusieurs à plusieurs.
image

Pour ce qui est de l’upload en Dart je n’ai pas pratiqué donc je vais avoir du mal à te répondre, mais des packages comme http ou dio font le taf.

Bonjour Isanforc,
Merci d’avoir pris le temps de me réponse.
C’est possible d’envoyer plusieurs fichiers à la fois mais on doit les envoyés séparément des autres champs de l’item (text, date, …), c’est la solution que j’ai trouvé pour l’instant.