Home > Backend Development > PHP Tutorial > Specific ideas and implementation of file upload using PHP_PHP tutorial

Specific ideas and implementation of file upload using PHP_PHP tutorial

WBOY
Release: 2016-07-13 17:34:38
Original
868 people have browsed it

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>

www.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...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template