SitePoint Sponsor

User Tag List

Results 1 to 4 of 4
  1. #1
    SitePoint Guru
    Join Date
    Nov 2004
    Location
    calif
    Posts
    723
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Error when uploading

    I'm using a small Upload script and am getting a puzzling error.

    When I try to upload a file name that has less than 50 characters in length, but a file name that has 3 numbers at the beginning, I get this error:
    ERROR: The maximum length for a file name is 50 characters.

    For example a file named 123Filename.txt gets that error.
    When I rename the file to abcFileName.txt, no error.

    Can someone help me determine why this is, and how to remedy it, please?
    thanks.

    Code:
    <?
    		// 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", ".rtf", ".htm", ".html", ".pdf", ".txt"); // Add or delete the file extensions you want to allow
    
    	$file_extensions_list = "doc,  rtf,  htm,  html,  pdf,  txt"; // Type the same as above, without the quotes separating them
    
    	$max_length = 50; // The maximum character length for a file name
    
    	$maximum_file_size = "2048000"; // 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 = "C:/Documents and Settings/input/";
    	$upload_uri = $folder_directory."C://Documents and Settings//input//";
    
    	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"]." (".$_FILES["userfile"]["size"]." bytes) 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_name, 0755);
    	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=\" font-size:12px;color:#900;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; font-size:12px;color:#6B6B6B; 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; font-size:12px;color:#6B6B6B; text-align: right; width: 30%\"><del>Delete File</del></td>";
    	$uploaded_files .= "
    			</tr>
    			<tr>
    				<td colspan=\"2\" style=\"background: #eee; font-size:12px;color:#6B6B6B; text-align: left; text-indent: 20px\">        Uploaded--"     .date("F d, Y ", filemtime($upload_directory.$file))."</td>";
    	$uploaded_files .="
    			</tr>
    	";
    	}
    	}
            function upload_file($upload_directory, $upload_uri) {global $account;
            $file_name = $_FILES["userfile"]["name"];
    	$file_name = str_replace(" ","_",$file_name);
    	$ext=pathinfo($file_name,PATHINFO_EXTENSION);
            $file_name = basename($file_name, '.' . $ext);
            $file_path = $upload_directory. $file_name.'~~'. $account->get_user_name().'.'.$ext;
    
    	$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.";
    
    	header("Location: http://www.someotherplace.com");
    	exit();
    
    	return $message;
    	}
    ?>

  2. #2
    Theoretical Physics Student bronze trophy Jake Arkinstall's Avatar
    Join Date
    May 2006
    Location
    Lancaster University, UK
    Posts
    7,062
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Change:
    PHP Code:
    elseif(strlen($file_name $max_length)) $message "ERROR: The maximum length for a file name is ".$max_length." characters."
    to
    PHP Code:
    elseif(strlen($file_name) > $max_length$message "ERROR: The maximum length for a file name is ".$max_length." characters."
    Jake Arkinstall
    "Sometimes you don't need to reinvent the wheel;
    Sometimes its enough to make that wheel more rounded"-Molona

  3. #3
    SitePoint Guru
    Join Date
    Nov 2004
    Location
    calif
    Posts
    723
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Brilliant

    Brilliant! thanks so much. I 'm amazed at this fix.

  4. #4
    Theoretical Physics Student bronze trophy Jake Arkinstall's Avatar
    Join Date
    May 2006
    Location
    Lancaster University, UK
    Posts
    7,062
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    It's alright
    Jake Arkinstall
    "Sometimes you don't need to reinvent the wheel;
    Sometimes its enough to make that wheel more rounded"-Molona


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •