P
P_F
Hi, ich habe eine funktion, die alle Dateien des $_FILES Array (sofern auf Größe und Dateityp gerüft) hochlädt. Die Funktion funktioniert auch einwandfrei, nur habe ich folgendes Problem: Wenn ich testweise eine unerlaubte Datei, bsp. 20 MB Mpegfile hochladen will, dann lädt er ohne ende, wahrscheinlich die datei hoch ...? Werden nicht normalerweise Dateityp und Größe vom Browser direkt an das Skript übergeben bevor die Datei hochgeladen wird?
Hier meine Funktion:
und die prüffunktionen für Größe und Typ:
Aufruf der Funktion
Hier meine Funktion:
PHP:
function upload_upload_files( $files_array, $files_destination, $new_filename_function=null, $min_filesize=1, $max_filesize=1000, $allowed_file_types ) {
/**
* go thru files_array and upload each file or set error_message
*/
if (count($files_array) > 0) {
while (list($key,$value) = each($files_array)) {
$err = false;
$filename = $files_array[$key]['name'];
$filename_tmp = $files_array[$key]['tmp_name'];
$filesize = $files_array[$key]['size'];
$filetype = $files_array[$key]['type'];
if (empty($filename)) {
continue;
}
/**
* error: wrong filetype
*/
if (upload_check_file_type($filetype, $allowed_file_types) == false) {
$err = true;
$results[$filename]['uploaded'] = false;
$results[$filename]['error'] = 'type';
continue;
}
/**
* error: wrong filesize
*/
if (upload_check_file_size($filesize, $min_filesize, $max_filesize) == false) {
$err = true;
$results[$filename]['uploaded'] = false;
$results[$filename]['error'] = 'size';
continue;
}
/**
* error: no uploaded file
*/
if (is_uploaded_file($filename_tmp) == false) {
$err = true;
$results[$filename]['uploaded'] = false;
$results[$filename]['error'] = 'nouploadedfile';
continue;
}
/**
* no errors, upload files and prepare output array
*/
if ($err == false) {
/**
* if function fpr new filename is defined use ist
*/
if ($new_filename_function !== null && function_exists($new_filename_function)) {
/**
* get the file_extension from filetype-array
*/
$file_extension = $allowed_file_types[$filetype];
$new_filename = $new_filename_function() . '.' . $file_extension;
$results[$filename]['new_filename'] = $new_filename;
$results[$filename]['size'] = $filesize;
$results[$filename]['type'] = $filetype;
} else {
$new_filename = $filename;
}
/**
* ... if not, use the original filename
*/
if (copy($filename_tmp, $files_destination.'/'.$new_filename)) {
$results[$filename]['uploaded'] = true;
}
}
}
}
return $results;
}
und die prüffunktionen für Größe und Typ:
PHP:
function upload_check_file_type( $file_type, $allowed_file_types ) {
if (array_key_exists($file_type, $allowed_file_types)) {
return true;
} else {
return false;
}
}
function upload_check_file_size( $file_size, $min_filesize, $max_filesize ) {
if ($file_size < $min_filesize || $file_size > $max_filesize) {
return false;
} else {
return true;
}
}
Aufruf der Funktion
PHP:
$upload_results = upload_upload_files( $_FILES,
_MEDIA_DIR,
'um_create_UserImageFilename',
1,
100000000000,
array( 'image/jpeg' => 'jpg',
'image/pjpeg' => 'jpg',
'image/jpg' => 'jpg',
'image/gif' => 'gif',
'image/png' => 'png') );
Zuletzt bearbeitet von einem Moderator: