Move_uploaded_file est-il nécessaire pour le stockage local avant le stockage dans le cloud?
Je travaille sur une application qui permet aux utilisateurs de télécharger une image sur le système et nous stockons cette image sur le stockage cloud (S3). Actuellement, une fois l'image téléchargée, nous traitons leur fichier en copiant le fichier temporaire localement via move_uploaded_file()
, puis en utilisant ce fichier local pour le télécharger sur S3. Cette copie locale est-elle une nécessité ou est-il possible de passer outre cette étape et de télécharger directement sur le stockage cloud sans jamais stocker une copie locale?
$temp = $_FILES['file']['tmp_name'];
$target = ABSPATH.'uploads/';
$name = $_FILES["file"]["name"];
$targetFile = $target . $name;
move_uploaded_file($temp,$targetFile);
//upload local file to s3
$this->saveToCloud($this->s3Path,$targetFile);
Avant que le fichier ne soit copié sur le stockage local via le move_uploaded_file
stockage php tmp:
/Applications/MAMP/tmp/php/phpx3uBiT
Ce que j'aimerais faire, c'est simplement:
$this->saveToCloud($this->s3Path,$_FILES["file"]["tmp_name"]);
Merci d'avance!
Si vous pensez à des problèmes de performances, vous ne devriez PAS vous en soucier move_uploaded_file
car il suffit de faire quelques vérifications et de renommer simplement son nom (chemin). La consommation du processeur est minime. À moins que la destination du fichier temporaire ne se trouve sur un disque dur externe et qu'il nécessite un transport réseau.
Si vous souhaitez alléger le processus du serveur, vous pouvez envisager d'utiliser AWS SDK Javascript pour navigateur et télécharger le fichier directement depuis le navigateur client vers votre compartiment S3 (consultez ce lien pour savoir comment le faire: https://docs.aws.amazon .com / sdk-pour-javascript / v2 / guide-du-développeur / exemple-s3-album-photo.html # exemple-s3-album-photo-ajout-photos ). En utilisant cette méthode, vous devez prendre en compte la création d'une requête HTTP uniquement pour enregistrer les informations de fichier sur votre base de données après / avant les téléchargements de fichiers.
Si vous n'êtes pas intéressé à utiliser AWS SDK Javascript pour navigateur, vous pouvez essayer: $this->saveToCloud($this->s3Path,$_FILES['file']['tmp_name']);
mais je ne suis pas sûr que cela fonctionne, je ne l'ai pas essayé.
J'espère que ça aide