Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2007, 07:59
hmartins
 
Fecha de Ingreso: mayo-2004
Mensajes: 95
Antigüedad: 20 años
Puntos: 0
Subir archivos grandes al un servidor

Hola, tengo el siguiente problema, no logro programar un gestor que me permita subir archivos grandes (más de 1MB) a un servidor a través de una interfaz web. Me bajé un código (free) de la red y lo implementé y me da errores que asumo son por cause de un timeout del servidor durante la subida de los archivos. Hablé con mi proveedor de hosting y me dicen que subieron el timeout, sin embargo sigue sin funcionar.

Les copio el código y el error que me devuelve. Saludos y espero por su ayuda:


Código del archivo que se encarga de efectuar el upload:
Código PHP:
<?
    
/*
    Silentum Uploader v1.2.0
    Modified March 4, 2007
    uploader.php copyright 2005-2007 "HyperSilence"
    */

    // Begin options

    
$allow_file_deletion true// To allow visitors to delete files, leave this at true; otherwise, change it to false

    
$file_extensions = array(".doc"".gif"".htm"".html"".jpg"".png"".txt"); // Add or delete the file extensions you want to allow

    
$file_extensions_list ".doc, .gif, .htm, .html, .jpg, .png, .txt, .mp3"// Type the same as above, without the quotes separating them

    
$max_length 30// The maximum character length for a file name

    
$maximum_file_size "51200000"// In bytes

    
$upload_log_file "upload_log.txt"// Change this to the log file you want to use

    // End options

    
$folder_directory "http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"]);
    
$message "";
    
$set_chmod 0;
    
$site_uri "http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
    
$upload_directory "files/";
    
$upload_uri $folder_directory."/files/";

    if(
$allow_file_deletion == true$status "enabled";
    else 
$status "disabled";

    if(
$_REQUEST["delete"] && $allow_file_deletion) {
    
$resource fopen($upload_log_file,"a");
    
fwrite($resource,date("F d, Y / h:i:sa")." - ".$_REQUEST["delete"]." deleted by ".$_SERVER["REMOTE_ADDR"]."\n");
    
fclose($resource);

    if(
strpos($_REQUEST["delete"],"/.") > 0);
    elseif(
strpos($_REQUEST["delete"],$upload_directory) === false);
    elseif(
substr($_REQUEST["delete"],0,6) == $upload_directory) {
    
unlink($_REQUEST["delete"]);
    
$message "File has been deleted.";
    
header("Location: $site_uri?message=$message");
    }
    }

    elseif(
$_FILES["userfile"]) {
    
$resource fopen($upload_log_file,"a");
    
fwrite($resource,date("F d, Y / h:i:sa")." - ".$_FILES["userfile"]["name"]." "
    
.$_FILES["userfile"]["type"]." uploaded by ".$_SERVER["REMOTE_ADDR"]."\n");
    
fclose($resource);

    
$file_type $_FILES["userfile"]["type"]; 
    
$file_name $_FILES["userfile"]["name"];
    
$file_ext strtolower(substr($file_name,strrpos($file_name,".")));
    
chmod($upload_uri."".$file_name0755);
    if(
$_FILES["userfile"]["size"] > $maximum_file_size) {
    
$message "ERROR: File size cannot be over ".$maximum_file_size." bytes.";
    }

    elseif(
$file_name == ""$message "ERROR: Please select a file to upload.";
    elseif(
strlen($file_name $max_length)) $message "ERROR: The maximum length for a file name is ".$max_length." characters.";
    elseif(!
preg_match("/^[A-Z0-9_.\- ]+$/i",$file_name)) $message "ERROR: Your file name contains invalid characters.";
    elseif(!
in_array($file_ext$file_extensions))
    
$message "ERROR: <ins>$file_ext</ins> is not an allowed file extension.";
    else 
$message upload_file($upload_directory$upload_uri);
    
header("Location: $site_uri?message=$message");
    }

    elseif(!
$_FILES["userfile"]);
    else 
$message "ERROR: Invalid file specified.";

    
$open opendir($upload_directory);
    
$uploaded_files "";
    while(
$file readdir($open)) {
    if(!
is_dir($file) && !is_link($file)) {
    
$uploaded_files .= "        <tr>
                <td style=\"background: #fff; color: #000; text-align: left; width: 70%\"><a href=\"$upload_directory$file\" title=\"$file ("
.filesize($upload_directory."".$file)." bytes)\">".$file."</a> (".filesize($upload_directory."".$file)." bytes)</td>";
    if(
$allow_file_deletion)
    
$uploaded_files .= "
                <td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><a href=\"?delete=$upload_directory"
.urlencode($file)."\" title=\"Delete File\">Delete File</a></td>";
    else
    
$uploaded_files .= "
                <td style=\"background: #fff; color: #000; text-align: right; width: 30%\"><del><strong>Delete File</strong></del></td>"
;
    
$uploaded_files .= "
            </tr>
            <tr>
                <td colspan=\"2\" style=\"background: #eee; color: #000; text-align: left; text-indent: 20px\">Uploaded <strong>"
.date("F d, Y / h:ia"filemtime($upload_directory.$file))."</strong></td>";
    
$uploaded_files .="
            </tr>
    "
;
    }
    }

    function 
upload_file($upload_directory$upload_uri) {
    
$file_name $_FILES["userfile"]["name"];
    
$file_name str_replace(" ","_",$file_name);
    
$file_path $upload_directory.$file_name;
    
$temporary $_FILES["userfile"]["tmp_name"];

    
$result move_uploaded_file($temporary$file_path);
    if(!
chmod($file_path,0777))
    
$message "ERROR: A folder to place the files was not found, or the files need to be CHMODed to 777.";
    else 
$message = ($result)?"File has been uploaded." "An error has occurred.";
    return 
$message;
    }
?>
Código de la interfaz:
Código PHP:
<?
    
include("uploader.php");
?>
        <p><strong><span style="background: #fff; color: #000"><? if($_REQUEST["message"] == "") echo "Upload a file below."; else echo $_REQUEST["message"]?></span></strong></p>
        <form action="upload.php" enctype="multipart/form-data" id="upload" method="post">
            <p><input id="userfile" name="userfile" size="45" type="file" /><input name="upload" type="submit" value="Upload File" /><br /></p>

            <p>Allowed file extensions: <strong><?=$file_extensions_list?></strong></p>

            <p>Maximum file size: <strong><?=$maximum_file_size?> bytes (~<?=round($maximum_file_size/1024)?>KB)</strong></p>

            <p>Deleting files is currently: <strong><?=$status?></strong></p>

            <p>Powered by: <a href="http://hypersilence.net" title="Silentum Uploader v1.2.0">Silentum Uploader v1.2.0</a></p>
        </form>

        <p><strong>Uploaded Files</strong></p>
        <table style="border: 2px dotted #000; width: 100%">
    <? if($uploaded_files == "") echo "        <tr>
                <td colspan=\"2\" style=\"background: #fff; color: #000; text-align: center\"><br /><strong>There are no uploaded files.</strong><br /><br /></td>
            </tr>
    "
; else echo $uploaded_files ?>
    </table>
Y ésta es la respuesta que me da la página:

Warning: chmod() [function.chmod]: No such file or directory in /home/ng000141/public_html/helder/uploader.php on line 57

Warning: Cannot modify header information - headers already sent by (output started at /home/ng000141/public_html/helder/uploader.php:57) in /home/ng000141/public_html/helder/uploader.php on line 68


Llevo MESES intentado conseguir alguna manera de subir archivos grandes al servidor, pero no la encuentro, es un proyecto que estoy haciendo y necesito de eso para poder avanzar, por favor que alguien me ayude.

Gracias.