J'obtiens cette erreur, lorsque j'essaie d'appeler une API de boîte via curl.
curl: (26) couldn't open file
Vous ne trouvez pas pourquoi! J'appelle cette API avec un nom de fichier correct -
curl https://upload.view-api.box.com/1/documents \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-type: multipart/form-data" \
-F file=@A_correct_file_name
J'ai vu les trois questions déjà posées, mais 2 d'entre elles sont sans réponse et une est spécifique à Facebook.
l'erreur cURL 26 n'a pas pu ouvrir le fichier
Erreur fatale: exception CurlExcc Uncaught: 26: impossible d'ouvrir le fichier "" renvoyé
Obtention d'une erreur fatale non capturée CurlException: 26: impossible d'ouvrir le fichier
Désolé les gars! Ma faute. Je n'avais pas inclus l'extension du fichier dans le nom du fichier. Après l'avoir inclus, cela a fonctionné. Je réponds à cela au cas où quelqu'un ferait la même erreur à l'avenir.
J'avais un problème similaire après être passé à PHP 5 (J'utilisais le @
méthode de téléchargement et elle était obsolète, j'ai donc dû commencer à utiliser CURLFile
), et la solution à mon problème a été trouvée dans ce pile .
Solution: le téléchargement curl ne fonctionnera pas avec chemins relatifs, utilisez plutôt le chemin complet
J'avais ce problème ce matin mais j'ai résolu ce problème
fileUpload=@\"file, with comma .txt\"
Vous devez donc mettre des guillemets autour du nom du fichier si vous avez des virgules dans le nom du fichier (\ ")
Pour mon cas, l'utilisation du chemin relatif n'a pas fonctionné. Mais le changer en chemin absolu le corrige.
Cela a échoué
curl -i -X POST -H "Content-Type: multipart/form-data" \
-F "file=@~/Downloads/xxx.csv" http://localhost:6708/upload
Cela a fonctionné
curl -i -X POST -H "Content-Type: multipart/form-data" \
-F "file=@/Users/myself/Downloads/xxx.csv" http://localhost:6708/upload
J'ai eu un problème similaire avec des chemins relatifs comme @Guilherme aussi. J'exécutais mon script bash avec:
bash test/script.sh
Cependant, mon fichier était au même niveau de répertoire que le script bash et non le répertoire test
(d'où j'appelais bash), donc le script n'a pas pu trouver mon fichier.
Solution pour moi:
1. cd dans/test et exécutez bash script.sh à partir de là
2. Utiliser des chemins absolus
Luis Cruz a raison: des guillemets sont requis autour du nom de fichier, mais je devais utiliser le mot-clé 'file', pas 'fileUpload', comme cela est indiqué dans la question.
curl -X GET \
-H 'Content-Type: multipart/form-data' \
-F file=@"/path/to/file.ext" \
'http://Host:port/path/to/dir'