Comment résoudre le problème de l'erreur "Impossible de bouger" lorsque Curl télécharge des fichiers sur PHP
P粉904191507
P粉904191507 2024-02-17 18:51:11
0
1
468

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粉904191507
P粉904191507

répondre à tous(1)
P粉348088995

-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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal