Avatar billede kgp43 Nybegynder
12. juni 2005 - 13:19 Der er 37 kommentarer og
1 løsning

Blank side ved upload

Hejsa,

Jeg har et mærkeligt problem.
Når jeg uploader store filer (+3MB) så får jeg mange gange en blank side i stedet for en "confirm" eller "error" meddelse og filen bliver ikke uploaded (med FTP). Hvis jeg derimod ændre det så jeg "udskriver" fil størrelsen på den uploaded fil og afslutter med exit(), så viser den størrelsen på alle uploads (tmp). Nogle forslag hvad der kan være galt? Upload virker næsten altid med små filer (10-100KB).

Test url:
http://www.savefile.com/filehost/test.php

Uploader (test2.php):
<?
/*
echo $_FILES['upld_file']['size']." Bytes";
exit();
*/

//Check if any file is submitted
if (!$_FILES['upld_file']['name']) {

    echo "<font color=red>No file selected</font>";
    exit();
}

//Get file name
$file_name = $_FILES['upld_file']['name'];

//FTP server info
$server_ip = "xxx.xxx.xxx.xxx";
$server_ftp_username = "user";
$server_ftp_password = "pass";

//Open the FTP connection
$conn_id = ftp_connect($server_ip);
$login_result = ftp_login($conn_id, $server_ftp_username, $server_ftp_password);

//Check if FTP connection is open
if ($login_result == false) {
    echo "<font color=red>Not able to connect to FTP (FS01)<br />
    Please contact the webmaster, (<a href='http://www.savefile.com/forums'>Support Forums</a>)</font>";
    exit();
}

//Get destinations
$to_file = "testuploads/".$file_name;
$from_file = $_FILES['upld_file']['tmp_name'];

//ascii filetypes
$ascii_filetypes = array('htm', 'html', 'shtml', 'cnf', 'css', 'forward', 'map', 'pwd', 'txt', 'grp', 'ctl', 'nfo');

if (in_array($file_type, $ascii_filetypes)) {
   
    //Upload the file to the fileserver using BINARY mode
    $ftp_upload = ftp_put($conn_id, $to_file, $from_file, FTP_ASCII);
    echo "mode: FTP_ASCII <br /><br />";
}else{
   
    //Upload the file to the fileserver using ASCII mode
    $ftp_upload = ftp_put($conn_id, $to_file, $from_file, FTP_BINARY);
    echo "mode: FTP_BINARY <br /><br />";
}

//Check if upload went okay
if($ftp_upload == true) {

    //Get filesize in MB
    $file_size = $_FILES['upld_file']['size']/1024;
    $file_size = round($file_size,2);
   
    echo "SUCCESS <br />
    <br />
    Filesize: $file_size KB<br />
    <br />
    (this is only a test upload)";
           
}else{

    echo "<font color=red>Error uploading the file (FTP)</font>";
}

//Close the FTP connection
$ftp_close = ftp_close($conn_id);

if (!$ftp_close) {

    echo "<font color=red>Error closing the FTP connection<br />
    Please contact the webmaster, (<a href='http://www.savefile.com/forums'>Support Forums</a>)</font>";
    exit();
}
?>
Avatar billede sukos Juniormester
12. juni 2005 - 13:50 #1
Hvis det er ver. 4.2.0 eller højere, kan du evt. få en fejlmeddelse (nr) med
$_FILES["upld_file"]["error"]

Og det kunne meget vel skyldes at filstr. overstiger hvad som er defineret i php.ini
Avatar billede sukos Juniormester
12. juni 2005 - 13:50 #2
Måske :O)
Avatar billede kgp43 Nybegynder
12. juni 2005 - 14:04 #3
filstørrelsen i php.ini er sat til den korrekte størrelse, så dette burde ikke være noget problem.

har ændret følgende:

//Check if upload went okay
if($ftp_upload == true) {

    //Get filesize in MB
    $file_size = $_FILES['upld_file']['size']/1024;
    $file_size = round($file_size,2);
   
    echo "SUCCESS <br />
    <br />
    Filesize: $file_size KB<br />
    <br />
    (this is only a test upload)";
           
}else{

    // File was not uploaded!
    switch ($_FILES['upld_file']['error']) // http://www.php.net/manual/en/features.file-upload.errors.php
    {
   
    case 1:
        echo "The uploaded file exceeds the upload_max_filesize directive in php.ini";
        break;

    case 2:
        echo "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";
        break;

    case 3:
        echo "The uploaded file was only partially uploaded";
        break;

    case 4:
        echo "No file was uploaded";
        break;

    case 6:
        echo "Missing a temporary folder";
        break;
    }
}
Avatar billede kgp43 Nybegynder
12. juni 2005 - 14:43 #4
Nu får jeg en blank side med teksten "" i toppen og ikke andet.

<?
/*
echo $_FILES['upld_file']['size']." Bytes";
exit();
*/

//Check if any file is submitted
if (!$_FILES['upld_file']['name']) {

    echo "<font color=red>No file selected</font>";
    exit();
}

//Get file name
$file_name = $_FILES['upld_file']['name'];

//FTP server info
$server_ip = "xxx.xxx.xxx.xxx";
$server_ftp_username = "user";
$server_ftp_password = "pass";

//Open the FTP connection
$conn_id = ftp_connect($server_ip);
$login_result = ftp_login($conn_id, $server_ftp_username, $server_ftp_password);

//Check if FTP connection is open
if ($login_result == false) {
    echo "<font color=red>Not able to connect to FTP (FS01)<br />
    Please contact the webmaster, (<a href='http://www.savefile.com/forums'>Support Forums</a>)</font>";
    exit();
}

//Get destinations
$to_file = "testuploads/".$file_name;
$from_file = $_FILES['upld_file']['tmp_name'];

//ascii filetypes
$ascii_filetypes = array('htm', 'html', 'shtml', 'cnf', 'css', 'forward', 'map', 'pwd', 'txt', 'grp', 'ctl', 'nfo');

if (in_array($file_type, $ascii_filetypes)) {
   
    //Upload the file to the fileserver using BINARY mode
    $ftp_upload = ftp_put($conn_id, $to_file, $from_file, FTP_ASCII);
    echo "mode: FTP_ASCII <br /><br />";
}else{
   
    //Upload the file to the fileserver using ASCII mode
    $ftp_upload = ftp_put($conn_id, $to_file, $from_file, FTP_BINARY);
    echo "mode: FTP_BINARY <br /><br />";
}

//Check if upload went okay
if($ftp_upload == true) {

    //Get filesize in MB
    $file_size = $_FILES['upld_file']['size']/1024;
    $file_size = round($file_size,2);
   
    echo "SUCCESS <br />
    <br />
    Filesize: $file_size KB<br />
    <br />
    (this is only a test upload)";
           
}else{

    // File was not uploaded!
    switch ($_FILES['upld_file']['error']) // http://www.php.net/manual/en/features.file-upload.errors.php
    {
   
    case 1:
        echo "<font color=red>The uploaded file exceeds the upload_max_filesize directive in php.ini</font>";
        break;

    case 2:
        echo "<font color=red>The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form</font>";
        break;

    case 3:
        echo "<font color=red>The uploaded file was only partially uploaded</font>";
        break;

    case 4:
        echo "<font color=red>No file was uploaded</font>";
        break;

    case 6:
        echo "<font color=red>Missing a temporary folder</font>";
        break;
    }
}

//Close the FTP connection
$ftp_close = ftp_close($conn_id);

if (!$ftp_close) {

    echo "<font color=red>Error closing the FTP connection<br />
    Please contact the webmaster, (<a href='http://www.savefile.com/forums'>Support Forums</a>)</font>";
    exit();
}
?>
Avatar billede kgp43 Nybegynder
12. juni 2005 - 14:44 #5
teksten: "mode: FTP_BINARY"
Avatar billede kgp43 Nybegynder
12. juni 2005 - 14:44 #6
Prøv at uploade en 1MB fil:
http://www.savefile.com/filehost/test.php
Avatar billede sukos Juniormester
12. juni 2005 - 15:08 #7
Jeg er blank, men du kan jo prøve at starte dit script med:

ini_set('error_reporting', "E_ALL");

for at få vist alle evt. fejlmeddelser.
Avatar billede kgp43 Nybegynder
12. juni 2005 - 15:10 #8
echo ini_set('error_reporting', "E_ALL"); ?
Avatar billede sukos Juniormester
12. juni 2005 - 15:14 #9
nej
<?php
ini_set('error_reporting', "E_ALL");
// resten af scriptet.....................




?>
Avatar billede kgp43 Nybegynder
12. juni 2005 - 15:17 #10
har added det, men stadig ingen fejlmeddelse.
dette her er underligt.
Avatar billede sukos Juniormester
12. juni 2005 - 16:27 #11
Måske en begrænsning p åFTP serveren?
Avatar billede kgp43 Nybegynder
12. juni 2005 - 17:10 #12
mine server admins har kigget og alt skulle være okay.
Avatar billede kgp43 Nybegynder
12. juni 2005 - 18:52 #13
Mine server admins har lige uploaded in 23MB fil uden problemer.
Har selv uploaded en 2.3MB fil hvilket ikke virkede (blank side).
Avatar billede sukos Juniormester
12. juni 2005 - 18:55 #14
Hmm, admin har?
Hvordan det? Samme script?

Og ellers, så er der jo også max_execution_time post_max_size eller hvad de nu hedder :O)
Avatar billede kgp43 Nybegynder
12. juni 2005 - 19:03 #15
yep, samme script/side.
er det også i php.ini eller skal det sættes directe på php siderne?
Avatar billede kgp43 Nybegynder
12. juni 2005 - 20:03 #16
Kan kun få set_time_limit til at virke direkte på php siderne.
Hvordan virker de andre?

max_input_time
max_execution_time
post_max_size
Avatar billede sukos Juniormester
12. juni 2005 - 20:11 #17
Prøvede lige med 14Mb og fik bare samme besked som dig!
Derefter lidt over 900 kB og fint nok.

Men ["error"] kommer jo også "kun" hvis der er en "error".

putter du 0 i din switch, vil jeg tro beskeden er "ok"
Avatar billede kgp43 Nybegynder
12. juni 2005 - 20:17 #18
smed "case 0" i min switch men intet resultat
Avatar billede kgp43 Nybegynder
12. juni 2005 - 20:53 #19
Den viser error [0] som fejl (med blank side)..... weird
Avatar billede sukos Juniormester
12. juni 2005 - 20:58 #20
njahh, medmindre 0 er defineret som noget tekst, er det jo meget normalt! :O)
0 er jo ikke en fejl, men en vellykket upload.

Og ved sgu ikke du, har aldrig selv rodet med ftp sammen med php.

Hvad med hvis du
1. accepterer allle filtyper
eller
2. ftp'er filen som den navngives af php ["tmp_nam"]

Men jeg er blank! desværre
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:03 #21
1.: Accepter all filetyper allerede
2.: Det vil jeg prøve

Ved hvorfor error[] altid er 0.
$_FILES['upld_file'] indeholder altid den rigtige mængde data, ligegyldit om det a 1KB eller 50MB. Så det må være en error ved FTP delen.

Kan printe filsize af $_FILES['upld_file'], også ved store filer.
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:04 #22
1. accepterer allle filtyper: Eller allerede sådan
2. ftp'er filen som den navngives af php ["tmp_nam"]: Er allerede sådan
Avatar billede sukos Juniormester
12. juni 2005 - 21:10 #23
Er der mulighed for at se en phpinfo()?

<?php phpinfo(); ?>

Og lige p.t. tvivler jeg på at admin har uploadet en stor fil.! :O)

["tmp_name"] er jo navnet på den fil som ligger i tmp mappen ved upload
["name"] er jo navnet på brugerens fil
Og tror sgutte det ville hjælpe noget heller.
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:10 #24
Har lavet det så den poster filesize på filen inden alt andet.
Prøv at uploade en "fejl upload", så ved du hvad jeg mener.

http://www.savefile.com/filehost/test.php
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:12 #25
Er ikke lige med på hvad du mener.

Her er phpinfo af main samt fileserver:
http://www.savefile.com/filehost/phpinfo.php
http://fs02.savefile.com/phpinfo.php
Avatar billede sukos Juniormester
12. juni 2005 - 21:13 #26
Hvis ingen fil er valgt, får jeg det at vide. MEn ikke som noget af det tekst du viser i scriptet herover.

Lige nu kan man ikke uploade alle filtyper.
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:17 #27
server admins har uploaded en 23,5MB fil med success.
kan se 10-15 filer på +30MB uploaded idag, så nogle gange lykkedes det at uploade en stor fil andre gange ikke.

["tmp_name"] er jo navnet på den fil som ligger i tmp mappen ved upload
- $_FILES['upld_file']['tmp_name'] er filen jeg uploader med FTP

["name"] er jo navnet på brugerens fil
- bruger dette til at fastslå extention af filen, men dette er fjernet på min "test uploader"



dette problem har været aktuelt i ca 2 uger, så den er ikke ny :P
har samtidig mistet ca 30% af mine besøgende.
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:19 #28
Har fjernet filtype begrænsningen
Avatar billede sukos Juniormester
12. juni 2005 - 21:24 #29
hmm, kan jeg ik' lige blive klog på.
max_execution_time er på begge sat til 30 (sek)
Og en ["error"] "hører ikke ind under her"

Måske det har noget at gøre med hvor meget ftp'en bliver brugt? (antal connections, måden samtidige connections håndteres på)

Men igen, jeg er blank, og må stå af her!
Avatar billede sukos Juniormester
12. juni 2005 - 21:25 #30
Men hov forresten, hvordan med et alm. uploadscript, uden brug af ftp?
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:27 #31
phpinfo:

max_input_time -1
- betyder det "unlimited" ?

max_execution_time 30
- Har det nogen relevans for uploads?
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:28 #32
"Men hov forresten, hvordan med et alm. uploadscript, uden brug af ftp?"
- Kan jeg ikke, for meget data og bw (bruger to seperate filservere til dette formål).
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:29 #33
har ftp/php også en timeout?
Avatar billede kgp43 Nybegynder
12. juni 2005 - 21:52 #34
proftpd session time er sat til "0" (unlimited)
Avatar billede sukos Juniormester
12. juni 2005 - 21:59 #35
ja, igen igen, jeg er blank!
Avatar billede kgp43 Nybegynder
12. juni 2005 - 22:10 #36
hehe, også mig :P
håber en anden kommer forbi.

Dette er min kode so far:




<?
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);
set_time_limit(36000);

/*
echo $_FILES['upld_file']['size']." Bytes";
exit();
*/

//Check if any file is submitted
if (!$_FILES['upld_file']['name']) {

    echo "<font color=red>No file selected</font>";
    exit();
}

//Post filesize
echo "Filesize: ".$_FILES['upld_file']['size']." Bytes (not uploaded yet)<br />";


//Get file name
$file_name = $_FILES['upld_file']['name'];

//Get the file extention
$file_type = $_FILES['upld_file']['name'];
$file_type = pathinfo($file_type);
$file_type = strtolower($file_type['extension']);

//FTP server info
$server_ip = "xxx.xxx.xxx.xxx";
$server_ftp_username = "xxxxxx";
$server_ftp_password = "xxxxxx";

//Open the FTP connection
$conn_id = ftp_connect($server_ip);
$login_result = ftp_login($conn_id, $server_ftp_username, $server_ftp_password);

//Check if FTP connection is open
if ($login_result == false) {
    echo "<font color=red>Not able to connect to FTP (FS01)<br />
    Please contact the webmaster, (<a href='http://www.savefile.com/forums'>Support Forums</a>)</font>";
    exit();
}

//Get destinations
$to_file = "testuploads/".$file_name;
$from_file = $_FILES['upld_file']['tmp_name'];

//ascii filetypes
$ascii_filetypes = array('htm', 'html', 'shtml', 'cnf', 'css', 'forward', 'map', 'pwd', 'txt', 'grp', 'ctl', 'nfo');

if (in_array($file_type, $ascii_filetypes)) {
   
    //Upload the file to the fileserver using BINARY mode
    $ftp_upload = ftp_put($conn_id, $to_file, $from_file, FTP_ASCII);
    echo "mode: FTP_ASCII <br />
    --------------------------------------------<br />
    <b>STATUS:</b><br />
    --------------------------------------------<br />
    <br />";
}else{
   
    //Upload the file to the fileserver using ASCII mode
    $ftp_upload = ftp_put($conn_id, $to_file, $from_file, FTP_BINARY);
    echo "mode: FTP_BINARY <br />
    --------------------------------------------<br />
    <b>STATUS:</b><br />
    --------------------------------------------<br />
    <br />";
}

//Check if upload went okay
if($ftp_upload == true) {

    //Get filesize in MB
    $file_size = $_FILES['upld_file']['size']/1024;
    $file_size = round($file_size,2);
   
    echo "SUCCESS <br />
    <br />
    Filesize: $file_size KB<br />
    <br />
    (this is only a test upload)";
           
}else{

    // File was not uploaded!
    switch ($_FILES['upld_file']['error']) // http://www.php.net/manual/en/features.file-upload.errors.php
    {
   
    case 1:
        echo "<font color=red>The uploaded file exceeds the upload_max_filesize directive in php.ini</font>";
        break;

    case 2:
        echo "<font color=red>The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form</font>";
        break;

    case 3:
        echo "<font color=red>The uploaded file was only partially uploaded</font>";
        break;

    case 4:
        echo "<font color=red>No file was uploaded</font>";
        break;

    case 6:
        echo "<font color=red>Missing a temporary folder</font>";
        break;
    }
}

//Close the FTP connection
$ftp_close = ftp_close($conn_id);

if (!$ftp_close) {

    echo "<font color=red>Error closing the FTP connection<br />
    Please contact the webmaster, (<a href='http://www.savefile.com/forums'>Support Forums</a>)</font>";
    exit();
}
?>
Avatar billede kgp43 Nybegynder
17. august 2005 - 11:47 #37
sukos: lig er svar så er der point.
Avatar billede kgp43 Nybegynder
12. september 2005 - 12:00 #38
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester