Im Internet Explorer v6 bricht der Upload beim Hochladen von grossen Bilddateien ab. Dieser
Abbruch erfolgt nur im Internet Explorer v6. Im allen anderen Browser funktioniert der PHP
Upload.
Wir vermuten, dass der TimeOut des Browsers (Internet Explorer) zu niedrig gesetzt ist (30 sec).
Was könnte man tun, um einen solchen clientseitigen TimeOut abzubrechen?
http://support.microsoft.com/kb/889334
Viele Grüße
markthit
PHP-Quellcode:
<?php
....Ausschnitt beginnt
//Falls Durchsuchen geklickt wurde
if(isset($_POST['medium_upload_x'])){
$amladen =1;
//echo "geklickt";
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
//echo "geladen";
$amladen=0;
//Prüfen ob Dateiname unterstützt wird
if(preg_match("/\." . $allowed_types . "$/i", $_FILES[filename][name])) {
//Prüfen ob Max-Größe überschritten wird
if($_FILES[filename][size] <= $max_byte_size) {
$dateiname=$_FILES[filename][name];
$dateigroesse=$_FILES[filename][size];
$dateityp=$_FILES[filename][type];
$fehlermeldung=$_FILES[filename][error];
$uniquename=$sess->createFileName();
//Hochladen der Datei auf dem Server
if(copy($_FILES["filename"]["tmp_name"], "Uploads/$uniquename")) {
$objectPic = new libPic($uniquename,"Uploads/");
$objectPic->setPicTyp();
$objectPic->setPicInfo();
$objectPic->setPicSize($dateigroesse);
libUtil::createThums($objectPic->picHeight,$objectPic->picWidth,$objectPic->picTyp,"$uniquename");
$sess->set('UNIQUENAME', $uniquename);
$sess->set('DATEIGROESSE', $dateigroesse);
$objectPic->getWidth_Height($objectPic);
$hoehex = $objectPic->picViewHeight;
$breitex = $objectPic->picViewWidth;
$w=round($objectPic->ausgabegroesse($objectPic->picWidth),0);
$h=round($objectPic->ausgabegroesse($objectPic->picHeight),0);
if($sess->get('TYP')==0){
if((($objectPic->picHeight>599)&&($objectPic->picWidth>799))||(($objectPic->picWidth>599)&&($objectPic->picHeight>799))){
$step=1;
}else{
//echo $objectPic->picHeight.'--'.$objectPic->picWidth;
$errormsg = 'Fehler: Die Auflösung Ihrer Fotodatei ist zu gering.';
}
}
if($sess->get('TYP')=='1'){
if((($w>=20)&&($h>=30))||(($w>=30)&&($h>=20))){
$step=1;
}else{
$errormsg = 'Fehler: Die Auflösung Ihrer Fotodatei ist zu gering.';
}
}
$sess->set('DATEINAME', $dateiname);
}else{
$errormsg = 'Fehler: Fotodatei konnte nicht hochgeladen werden. Bitte versuchen Sie es erneut.';
}
}else{
$errormsg ='Fehler: Größe der Fotodatei überschreitet 15 MB. Die Fotodateien darf maximal 15 MB sein.';
}
}else{
$errormsg='Fehler: Dateityp wird nicht unterstützt. Nur JPG, JPEG oder PNG Formate sind zulässig.';
}
}else{
$errormsg='Fehler: Datei konnte nicht hochgeladen werden.';
}
....Ausschnitt endet
?>
Abbruch erfolgt nur im Internet Explorer v6. Im allen anderen Browser funktioniert der PHP
Upload.
Wir vermuten, dass der TimeOut des Browsers (Internet Explorer) zu niedrig gesetzt ist (30 sec).
Was könnte man tun, um einen solchen clientseitigen TimeOut abzubrechen?
http://support.microsoft.com/kb/889334
Viele Grüße
markthit
PHP-Quellcode:
<?php
....Ausschnitt beginnt
//Falls Durchsuchen geklickt wurde
if(isset($_POST['medium_upload_x'])){
$amladen =1;
//echo "geklickt";
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
//echo "geladen";
$amladen=0;
//Prüfen ob Dateiname unterstützt wird
if(preg_match("/\." . $allowed_types . "$/i", $_FILES[filename][name])) {
//Prüfen ob Max-Größe überschritten wird
if($_FILES[filename][size] <= $max_byte_size) {
$dateiname=$_FILES[filename][name];
$dateigroesse=$_FILES[filename][size];
$dateityp=$_FILES[filename][type];
$fehlermeldung=$_FILES[filename][error];
$uniquename=$sess->createFileName();
//Hochladen der Datei auf dem Server
if(copy($_FILES["filename"]["tmp_name"], "Uploads/$uniquename")) {
$objectPic = new libPic($uniquename,"Uploads/");
$objectPic->setPicTyp();
$objectPic->setPicInfo();
$objectPic->setPicSize($dateigroesse);
libUtil::createThums($objectPic->picHeight,$objectPic->picWidth,$objectPic->picTyp,"$uniquename");
$sess->set('UNIQUENAME', $uniquename);
$sess->set('DATEIGROESSE', $dateigroesse);
$objectPic->getWidth_Height($objectPic);
$hoehex = $objectPic->picViewHeight;
$breitex = $objectPic->picViewWidth;
$w=round($objectPic->ausgabegroesse($objectPic->picWidth),0);
$h=round($objectPic->ausgabegroesse($objectPic->picHeight),0);
if($sess->get('TYP')==0){
if((($objectPic->picHeight>599)&&($objectPic->picWidth>799))||(($objectPic->picWidth>599)&&($objectPic->picHeight>799))){
$step=1;
}else{
//echo $objectPic->picHeight.'--'.$objectPic->picWidth;
$errormsg = 'Fehler: Die Auflösung Ihrer Fotodatei ist zu gering.';
}
}
if($sess->get('TYP')=='1'){
if((($w>=20)&&($h>=30))||(($w>=30)&&($h>=20))){
$step=1;
}else{
$errormsg = 'Fehler: Die Auflösung Ihrer Fotodatei ist zu gering.';
}
}
$sess->set('DATEINAME', $dateiname);
}else{
$errormsg = 'Fehler: Fotodatei konnte nicht hochgeladen werden. Bitte versuchen Sie es erneut.';
}
}else{
$errormsg ='Fehler: Größe der Fotodatei überschreitet 15 MB. Die Fotodateien darf maximal 15 MB sein.';
}
}else{
$errormsg='Fehler: Dateityp wird nicht unterstützt. Nur JPG, JPEG oder PNG Formate sind zulässig.';
}
}else{
$errormsg='Fehler: Datei konnte nicht hochgeladen werden.';
}
....Ausschnitt endet
?>
Kommentar