To upload files, we need to use the type=file type of the form in HTML and its enctype attribute. This is what we all have to use. Of course, we must use the FILE function library, string type function library, directory function library and $_FILES[] among the PHP function libraries.
Perhaps every site may have many restrictions on uploading files. These restrictions include file type, file size, extension, and the existence of the upload directory, the existence of the upload file, the writability of the directory, and the Readability, renaming of uploaded files and how to copy files from cache to the directory you need.
Of course, error preprocessing cannot be ignored! If we discuss it further, we can also enable event log recording for file operations.
Below we implement these functions through a program:
The first is our preset variable value, which includes file size, file extension type, MIMI type, and whether to delete the switch variable
$MAX_SIZE = 2000000;
$MAX_SIZE = 2000000;
$FILE_MIMES = array(image/jpeg,image/jpg,image/gif
,image/png,application/msword);
$FILE_EXTS = array(.zip,.jpg,.png,.gif);
$DELETABLE = true; |
$FILE_MIMES = array(image/jpeg,image/jpg,image/gif
,image/png,application/msword);
$FILE_EXTS = array(.zip,.jpg,.png,.gif);
$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 = files/;
$upload_url = $url_dir./files/;
$message =; |
$DELETABLE = true; |
The next step is to set the browser access variables and directory access variables:
if (!is_dir(files)) {
if (!mkdir($upload_dir))
die (upload_files directory doesnt exist and creation failed);
if (!chmod($upload_dir,0755))
die (change permission to 755 failed.);
} |
$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 = files/;
$upload_url = $url_dir./files/;
$message =; |
Create an upload directory and change permissions accordingly:
if (!is_dir(files)) {
if (!mkdir($upload_dir))
die (upload_files directory doesnt exist and creation failed);
if (!chmod($upload_dir,0755))
die (change permission to 755 failed.);
} |
用户请求的处理:
if ($_REQUEST[del] && $DELETABLE) {
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],files/) === false); //possible hacking
else if (substr($_REQUEST[del],0,6)==files/) {
unlink($_REQUEST[del]);
print <script>window.location.href=$url_this?message=deleted 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,.)));
//文件大小的检查:
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.;
列出我们上传的文件:
$handle=opendir($upload_dir);
$filelist = ;
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= <a href=$upload_dir$file>.$file.</a>;
if ($DELETABLE)
$filelist .= <a href=?del=$upload_dir$file 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>
<font color=red><?=$_REQUEST[message]?></font>
<br>
<form name=upload id=upload ENCTYPE=multipart/form-data method=post>
Upload File <input type=file id=userfile name=userfile>
<input type=submit name=upload value=Upload>
</form>
<br><b>My Files</b>
<hr width=70%>
<?=$filelist?>
<hr width=70%>
<small><sup>Developed By
<a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</sup></small>
</center>
|
$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],files/) === false); //possible hacking
else if (substr($_REQUEST[del],0,6)==files/) {
unlink($_REQUEST[del]);
print <script>window.location.href=$url_this?message=deleted 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,.)));
//文件大小的检查:
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.;
列出我们上传的文件:
$handle=opendir($upload_dir);
$filelist = ;
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= <a href=$upload_dir$file>.$file.</a>;
if ($DELETABLE)
$filelist .= <a href=?del=$upload_dir$file 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>
<font color=red><?=$_REQUEST[message]?></font>
<br>
<form name=upload id=upload ENCTYPE=multipart/form-data method=post>
Upload File <input type=file id=userfile name=userfile>
<input type=submit name=upload value=Upload>
</form>
<br><b>My Files</b>
<hr width=70%>
<?=$filelist?>
<hr width=70%>
<small><sup>Developed By
<a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a>
</sup></small>
</center>
|
http://www.bkjia.com/PHPjc/508470.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/508470.htmlTechArticleTo upload files we need to use the type=file type of the form in HTML and its enctype attribute. This is what we all have to use. Of course, the FILE function library in the PHP function library, the string class...