Ich versuche gerade das Hochladen von Dateien in meinem CakePHP 3 Projekt zu ermöglichen. Ich habe die folgende Funktion in meiner Upload-Komponente, die die Dateien speichern (die durch $ als Eingabe gegeben werden this-> request-> Daten) in Webroot/img/uploads:Inkonsistenz zwischen dem Debug Text :: uuid() und dem tatsächlich hochgeladenen Dateipfad CakePHP 3
public function send($data)
{
if (!empty($data)) {
if (count($data) > $this->maxFiles) {
throw new InternalErrorException("Error Processing Request. Max number files accepted is {$this->max_files}", 1);
}
$fileNames = [];
$count = 0;
foreach ($data as $file) {
$filename = $file['name'];
$file_tmp_name = $file['tmp_name'];
$dir = WWW_ROOT.'img'.DS.'uploads';
$allowed = ['png', 'jpg', 'jpeg'];
if (!in_array(substr(strrchr($filename , '.') , 1) , $allowed)) {
// Iterate through extension to sum up what types of files are allowed to upload
$output = "Error Processing Request. It is only allowed to upload files with the following extensions: ";
foreach($this->allowed as $extension){ $output .= $extension . ' '; }
throw new InternalErrorException($output, 1);
}elseif(is_uploaded_file($file_tmp_name)){
debug(Text::uuid().'-'.$filename);
debug($file_tmp_name);
move_uploaded_file($file_tmp_name, $dir.DS.Text::uuid().'-'.$filename);
}
}
}
}
diese Funktion wird die Dateien gespeichert in der Tat zu der angegebene Ordner, aber mit einem anderen Dateinamen als beim Debuggen von Text :: uuid(). '-'. $ filename.
Debug-Ausgabe:
f5b0ca4f-cb73-4382-b1ca-0eee232ab17a-phinx.png
Dateiname in Webroot/img/uploads Ordner:
4a635fa6-98ea-461e-a98d-0f6ac34c65e7-phinx.png
Meine Frage ist: Wer weiß, wie der Name der Datei zu packen, dass wird in den Ordner webroot/img/uploads hochgeladen? Der Grund dafür ist, dass ich diese Pfade in einer Datenbank speichern möchte.
Sie wissen, dass '' Text :: uuid() '' jedes Mal eine ** andere ** eindeutige ID zurückgibt, wenn es aufgerufen wird? Warum speichern Sie nicht einfach den '' Text :: uuid() '' auf einer Variablen und benutzen Sie ihn. Wie '' $ file_tmp_name, $ dir.DS. $ myvar .'- '. $ Filename''? – gmponos
Danke für die schnelle Antwort :). Das hat für mich funktioniert, dumm von mir. Ich kann die richtige Antwort in mindestens 48 Stunden markieren. Vielleicht kann es jemand markieren? – markvdlaan93
@gmponos sollte ihren Kommentar als Antwort eingeben, damit das OP es als akzeptiert markieren kann. –