Eine frage wegen dateiuploadfunktion

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
chris1278
Mitglied
Beiträge: 4147
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Eine frage wegen dateiuploadfunktion

Beitrag von chris1278 »

Hallo liebe Gemeinde, ich bräuchte mal eine Auskunft.

Erstmal sorry. sollte ich das falsche Thema ausgewählt haben. Dann bitte ich Höfflichst einen Moderator dies entsprechend zu verschieben.

Ich bin gerade dabei, mich für meine Erweiterung „Simple Gallery“ mit der Thematik „Multiple Datei-Upload“ zu beschäftigen.

Ich habe auch schon eine Version, die soweit läuft, aber ich bin da noch nicht mit zufrieden.

Also im Moment lade ich die Dateien aus dem HTML-Formular in ein Array rein. Dies hab ich mir von der anderen Galerie, die aktuell von Satanov ist, abgeguckt.

Darum lade ich dies aktuell so:

Code: Alles auswählen

$array = $this->request->variable('upload_test', ['name'=> ['' => ''], 'full_path' => ['' => ''], 'type' => ['' => ''], 'tmp_name' => ['' => ''], 'error' =>  ['' => ''], 'size' => ['' => '']], true, \phpbb\request\request_interface::FILES);
Das funktioniert auch soweit und auch die abfrage der einzelnen dateien funktioniert. Und ich mache die meisten einzelnen Prüfungen mit dem phpbb eigene Routine.

Meine frage wäre. Wie müsste ich das anstellen, um das array in bzw. ich kann auch das array als single file array aufbauen was ich ja eh mache in den normaalen upload zu übergeben.

Im moment mach ich das ja so:

Code: Alles auswählen

$fileupload = $this->files_factory->get('upload')
			->set_allowed_extensions($sg_allowed_img_formats)
			->set_disallowed_content(['body', 'head', 'html', 'img', 'plaintext', 'a href', 'pre', 'script', 'table', 'title'])
			->set_max_filesize($sg_allowed_file_size)
			->set_error_prefix('SG_FILES_ERROR_');

		$upload_file = $fileupload->handle_upload('files.types.form', 'sg_pic_upload');
Das funktioniert allerdings nicht mit mehreren dateien.

Ich lade die dateien alle in eine array das dann in etwa so ausschaut:

Code: Alles auswählen

array (size=6)
	'name' => 
		array (size=2)
			0 => string '1.jpg' (length=5)
			1 => string '1.png' (length=5)
	
	'full_path' => 
		array (size=2)
			0 => string '1.jpg' (length=5)
			1 => string '1.png' (length=5)
	'type' => 
		array (size=2)
			0 => string 'image/jpeg' (length=10)
			1 => string 'image/png' (length=9)
	'tmp_name' => 
		array (size=2)
			0 => string 'D:\wamp64\temp\php6D51.tmp' (length=26)
			1 => string 'D:\wamp64\temp\php6D52.tmp' (length=26)
	'error' => 
		array (size=2)
			0 => string '0' (length=1)
			1 => string '0' (length=1)
	'size' => 
		array (size=2)
			0 => string '183852' (length=6)
			1 => string '32111' (length=5)
HAb jetzt mal mit 2 dateien generiert.

Ich arbeite dann mit einem counter:

Code: Alles auswählen

$file_count		= !empty($uploads['name']) ? count($uploads['name']) : 0;
Damit ich die einzelnen Dateien einzeln durchlaufen lassen kann.

Code: Alles auswählen

for ($i = 0; $i < $file_count; $i++)
				{
					$upload_ready[$i] = [
						'name'			=> utf8_basename($uploads['name'][$i]),
						'full_path'		=> $uploads['full_path'][$i],
						'type'			=> $uploads['type'][$i],
						'tmp_name'		=> $uploads['tmp_name'][$i],
						'error'			=> ($uploads['error'][$i]) ? $uploads['error'][$i] : null,
						'size'			=> $uploads['size'][$i]
					];
Wie man sieht mache ich das ganze mit ner einfachen for schleife. So kann ich jede datei einzeln abarbeiten und prüfen und dann entscheiden hochladen oder nicht mit fehlermeldung.

Das Funktioniert ja auch.

Meine Idee wäre es jetzt in der Forschleife einfach das array aufzubauen und an das zu übergeben:

Code: Alles auswählen

$upload_file = $fileupload->handle_upload()
Allerdings funktioniert das auch nicht so einfach.

Wer sich den ganzen quellcode der Test extension anschauen mag kann dies gerne hier tun:

https://github.com/chris1278/galtest/tree/Beta-7

Aktuell bin ich bei beta 7.

Diese ext ist nur zum testen. Wenn die funktion mit dem mehrere Bilder upload funktioniert werde ich dies in der Gallerie implementieren.
Verschoben von Coding & Technik nach Extension Bastelstube am 26.01.2026 19:51 durch LukeWCS

Benutzeravatar
IMC
Mitglied
Beiträge: 929
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: Eine frage wegen dateiuploadfunktion

Beitrag von IMC »

Möchtest du am Ende ein Array das so aussieht?

Code: Alles auswählen

array(3) {
  [0]=>
  array(6) {
    ["name"]=>
    string(15) "Git Desktop.gif"
    ["full_path"]=>
    string(15) "Git Desktop.gif"
    ["type"]=>
    string(9) "image/gif"
    ["tmp_name"]=>
    string(27) "/tmp/php49cap9j5vmh71DMAOEN"
    ["error"]=>
    NULL
    ["size"]=>
    string(6) "236398"
  }
  [1]=>
  array(6) {
    ["name"]=>
    string(25) "GitHubSkyline - Kopie.jpg"
    ["full_path"]=>
    string(25) "GitHubSkyline - Kopie.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(27) "/tmp/phpac53bk9ni0o7bKu2NDU"
    ["error"]=>
    NULL
    ["size"]=>
    string(6) "136357"
  }
  [2]=>
  array(6) {
    ["name"]=>
    string(17) "GitHubSkyline.jpg"
    ["full_path"]=>
    string(17) "GitHubSkyline.jpg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(27) "/tmp/phptd6snpb0iptk6RtrTJ1"
    ["error"]=>
    NULL
    ["size"]=>
    string(6) "136357"
  }
}
Gruß, Thorsten

Meine Extensions
Benutzeravatar
chris1278
Mitglied
Beiträge: 4147
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Eine frage wegen dateiuploadfunktion

Beitrag von chris1278 »

Ja auch. Dann könnte ich aus der for schleife eine foreach ychleife machen.
Benutzeravatar
IMC
Mitglied
Beiträge: 929
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: Eine frage wegen dateiuploadfunktion

Beitrag von IMC »

Code: Alles auswählen

$new_upload_ary = [];

foreach ($uploads as $key_assoc => $values) {
	foreach ($values as $key_num => $value) {
		$new_upload_ary[$key_num][$key_assoc] = $value;
	}
}
Gruß, Thorsten

Meine Extensions
Benutzeravatar
chris1278
Mitglied
Beiträge: 4147
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: Eine frage wegen dateiuploadfunktion

Beitrag von chris1278 »

Das ist pprima. Dann kann ich das umständliche hochzählen unterlassen und kann das mit ner normalen foreach schleife nutzen.

Dafür danke dir.
Antworten

Zurück zu „Extension Bastelstube“