You are not logged in.
Pages: 1
Bonjour à tous,
J'essaye d'envoyer des documents via l'API REST sur GLPI mais quand j'ouvre les fichiers dans l'interface web de GLPI, le fichier est vide.
Du moins, ça me le fait surtout sur des fichiers image (même de petite taille de quelque kilo octets).
J'ai testé d'envoyer un fichier texte de 1ko et il est bien complet.
J'ai une erreur qui revient dans php-errors.log (j'ai enlevé l'encodage du fichier en base64 très long) :
[2024-08-14 09:52:31] glpiphplog.WARNING: *** PHP User Warning (512): Moving file `
[...]
` is forbidden for security reasons. in /var/www/glpi/src/Document.php at line 1181
Backtrace :
src/Document.php:1181 trigger_error()
src/Document.php:274 Document->moveUploadedDocument()
src/CommonDBTM.php:1297 Document->prepareInputForAdd()
src/Api/API.php:1856 CommonDBTM->add()
src/Api/APIRest.php:317 Glpi\Api\API->createItems()
apirest.php:57 Glpi\Api\APIRest->call()
public/index.php:82 require()
J'ai ce message avec plusieurs image jpg de quelques dizaines de kilo octets.
Voici le code Powershell que j'utilise pour faire les requêtes.
La variable $url contient l'adresse du serveur GLPI, les variables $app_token et $user_token les tokens correspondants.
$session_token = (Invoke-RestMethod -Uri "$url/apirest.php/initSession?get_full_session=true" -Method POST -Headers @{"Content-Type" = "application/json"; "Authorization" = "user_token $user_token"; "App-Token" = "$app_token"}).session_token
$contenuFichier = [System.IO.File]::ReadAllBytes("C:\image.jpg")
$pieceJointe = @{
input = @{
name = "image.jpg"
filename = "image.jpg"
mime = "image/jpeg"
upload_file = ([Convert]::ToBase64String($contenuFichier))
}
} | ConvertTo-Json
([Convert]::ToBase64String($contenuFichier))
$reponse_fichier = Invoke-RestMethod -Uri "$url/apirest.php/Document" -Method POST -Headers @{ "Content-Type" = "application/json"; "App-Token" = $app_token; "Session-Token" = $session_token } -Body $pieceJointe
J'ai vérifié les droits dans /var/www/glpi/files et normalement tous les droits sont bons.
Pouvez-vous m'aider à trouver ce qui bloque l'envoi des documents ?
Merci d'avance
Offline
Cette erreur ne devrait se produire que si le nom de fichier fourni contient les séparateurs de chemin d'accès "/" ou "\". Quelle version de GLPI utilisez-vous ?
GLPI Collaborator and Plugin Developer.
My non-English comments are automated translations. Sorry for any confusion that causes.
Mes commentaires non anglais sont des traductions automatiques. Désolé pour toute confusion qui cause.
Mis comentarios que no están en inglés son traducciones automáticas. Perdón por cualquier confusión que cause.
Offline
Bonjour,
Je suis sur la version 10.0.16
Offline
Bonjour,
Je viens d'essayer quelque chose suite à votre remarque sur les séparateurs de chemin d'accès.
Dans mon cas, seul le type mime contient un séparateur. Lorsque je l'enlève, le navigateur demande à le télécharger et le fichier téléchargé correspond bien au fichier envoyé.
Ce qui me surprend aussi, c'est que le problème ne se manifeste pas lorsque j'utilise le type mime "text/plain".
Erratum, le fichier est vide (0ko). Aussi je pensais que le fichier texte fonctionnait mais en réalité, il est vide aussi.
Cela se produit donc tout le temps.
Last edited by qretornaz (2024-08-19 10:07:23)
Offline
Pages: 1