PDA

View Full Version : upload from browser


nickk0106584
10-12-2005, 02:22 PM
Hi,

How can i allow a user to upload files from their computer to a server?

Thanks.

Nick

Error 530
10-12-2005, 02:24 PM
sure, ad an account and voila

davidj
10-12-2005, 02:40 PM
you need to decide on a handling script language (PHP,ASP,CGI/PERL etc)

you need to add an upload form to your site

<FORM ACTION="" METHOD="post" ENCTYPE="multipart/form-data">
file to Upload: <INPUT TYPE="file" NAME="fileuploader">

you need to check what size files the server will allow.

this is a risky business and can be riddled with danger so you need a bit of validation to make sure its the correct file size and the right type of file.

this PHP forum will have a file upload class which will do all of the validation
there are loads of free scripts but they may take a bit of tweaking to get them just right for you

Creative Insanity
10-12-2005, 06:10 PM
Here is one I done some time ago.. you are welcome to use it as I do not need it anymore. I placed some comments so you can see what each part does.

<?php
//Mmaximum file size. You may increase or decrease.
$MAX_SIZE = 10000000;

//Allowable file Mime Types. Add more mime types if you want
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword');

//Allowable file ext. names. you may add more extension names.
$FILE_EXTS = array('.zip','.jpg','.png','.gif','.mp3');

//Allow file delete? no, if only allow upload only
$DELETABLE = false;


// Do not touch the below if you are not confident.
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF ']);
$url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

$upload_dir = "radio/";
$upload_url = $url_dir."/radio/";
$message ="Trach submitted!";

// Create Upload Directory
if (!is_dir("radio")) {
if (!mkdir($upload_dir))
die ("upload_files directory doesn't exist and creation failed");
if (!chmod($upload_dir,0755))
die ("change permission to 755 failed.");
}

// Process User's Request
if ($_REQUEST[del] && $DELETABLE) {
$resource = fopen("log.txt","a");
fwrite($resource,date("Ymd h:i:s")."DELETE - $_SERVER[REMOTE_ADDR]"."$_REQUEST[del]\n");
fclose($resource);

if (strpos($_REQUEST[del],"/.")>0); //possible hacking
else if (strpos($_REQUEST[del],$upload_dir) === false); //possible hacking
else if (substr($_REQUEST[del],0,6)==$upload_dir) {
unlink($_REQUEST[del]);
print "<script>window.location.href='$url_this?message=d eleted successfully'</script>";
}
}
else if ($_FILES['userfile']) {
$resource = fopen("log.txt","a");
fwrite($resource,date("Ymd h:i:s")."UPLOAD - $_SERVER[REMOTE_ADDR]"
.$_FILES['userfile']['name']." "
.$_FILES['userfile']['type']."\n");
fclose($resource);

$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,". ")));

//File Size Check
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$message = "The file size is over 2MB.";
//File Type/Extension Check
else if (!in_array($file_type, $FILE_MIMES)
&& !in_array($file_ext, $FILE_EXTS) )
$message = "Sorry, $file_name($file_type) is not allowed to be uploaded.";
else
$message = do_upload($upload_dir, $upload_url);

print "<script>window.location.href='$url_this?message=$ message'</script>";
}
else if (!$_FILES['userfile']);
else
$message = "Invalid File Specified.";

// List Files

$handle=opendir($upload_dir);
$filelist = "";
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= ".$file.";
if ($DELETABLE) {
$delfile = $file;
$delfile = str_replace("%","%25",$delfile);
$delfile = str_replace("&","%26",$delfile);
$delfile = str_replace("+","%2b",$delfile);
$delfile = str_replace("?","%3f",$delfile);
$filelist .= " <a href='?del=$upload_dir".$delfile."' title='delete'>x</a>";
}
$filelist .= "<sub><small><small><font color=grey> ".date("d-m H:i", filemtime($upload_dir.$file))
."</font></small></small></sub>";
$filelist .="<br>";
}
}

function do_upload($upload_dir, $upload_url) {

$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_name = str_replace("\\","",$file_name);
$file_name = str_replace("'","",$file_name);
$file_path = $upload_dir.$file_name;

//File Name Check
if ( $file_name =="") {
$message = "Invalid File Name Specified";
return $message;
}

$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777))
$message = "change permission to 777 failed.";
else
$message = ($result)?"$file_name uploaded successfully." :
"Somthing is wrong with uploading a file.";
return $message;
}

?>

<center>

<br><b>what ever text you want</b>

<hr width=70%>
<?=$filelist?>
<hr width=70%>
</center>