Maison  >  Questions et réponses  >  le corps du texte

Comment résoudre le problème de l'erreur "Impossible de bouger" lorsque Curl télécharge des fichiers sur PHP

Je souhaite configurer un service HTTP simple (utilisant PHP) pour recevoir des fichiers d'un autre ordinateur à l'aide de Linux curl et Windows Powershell. J'ai lu des sources Internet, notamment PHP, je ne peux pas télécharger de fichiers sur le serveur ? Utilisez cURL pour télécharger les données POST avec le fichier. Ces messages m'ont aidé à résoudre le problème des paramètres, mais pas tous.

Voici mon code (voir ici)

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
?>

C'est la commande que j'ai utilisée et j'ai reçu la réponse d'erreur.

# bash
curl -X POST -F "id=fileToUpload" -F "fileToUpload=@null.txt" http://127.0.0.1/upload.php

Voici /var/apache2/error.log

[Sun Aug 27 05:13:13.392185 2023] [php7:warn] [pid 77733] [client 127.0.0.1:54732] PHP Warning:  move_uploaded_file(uploads/null.txt): failed to open stream: No such file or directory in /var/www/html/upload.php on line 5
[Sun Aug 27 05:13:13.392251 2023] [php7:warn] [pid 77733] [client 127.0.0.1:54732] PHP Warning:  move_uploaded_file(): Unable to move '/tmp/phpynhUuv' to 'uploads/null.txt' in /var/www/html/upload.php on line 5

Statut du téléchargement

$ ll   
> total 8
> drwxr-xr-x 2 root     root     4096 Aug 27 05:08 html
> drwxrwxrwx 2 www-data www-data 4096 Jun  2 22:38 uploads

Quelqu'un peut-il me dire quel est le problème avec mon code ? Tout avis serait grandement apprécié.

P.S. Merci à ADyson et Hanshenrik pour leurs généreux conseils. Ce problème était dû à deux choses : (1) l'utilisation de -F comme commande curl, (2) la correction du chemin PHP pour l'adapter à la configuration de mon dossier.

P粉904191507P粉904191507268 Il y a quelques jours433

répondre à tous(1)je répondrai

  • P粉348088995

    P粉3480889952024-02-18 10:02:04

    -dapplication/x-www-form-urlencoded 格式发送数据,PHP 自动将其解析为 $_POST 超全局变量,而您的代码尝试从 $_FILES 超全局变量读取上传的文件,该文件据我所知,PHP仅解析multipart/form-data-requests,并且要使curl发送multipart/form-data请求,请使用-F

    curl -F @null.txt http://127.0.0.1/upload.php

    répondre
    0
  • Annulerrépondre