Home  >  Article  >  Backend Development  >  Encapsulation of PHP single file upload function

Encapsulation of PHP single file upload function

WBOY
WBOYOriginal
2016-07-25 08:43:271127browse
  1. //Encapsulation of single file upload function
  2. //Principle of file upload: Upload client files to the server, and then move the temporary files on the server to the specified directory.
  3. //Direction of the file: Client -> Server (temporary file) -> Specify the directory. When the file enters the server, it becomes a temporary file. At this time, the name of the temporary file tmp_name should be used in the operation.
  4. //It is unsafe to set upload file restrictions (file type and size) on the client because customers can modify the restrictions through source code, so set restrictions here on the server.
  5. //Set encoding to UTF-8 to avoid Chinese garbled characters
  6. header('Content-Type: text/html;charset=utf-8');
  7. //Receive uploaded file information through $_FILES
  8. $fileInfo = $ _FILES['myFile'];
  9. function uploadFile($fileInfo,$uploadPath='uploads',$flag=true,$allowExt=array('jpeg','jpg','png','gif'),$maxSize = 2097152){
  10. //Judge the error number, it can only be 0 or UPLOAD_ERR_OK, no error occurs, the upload is successful
  11. if($fileInfo['error']>0){
  12. //Attention! The error message is no 5
  13. switch($fileInfo['error']){
  14. case 1:
  15. $mes= 'The uploaded file exceeds the value of the upload_max_filesize option in the PHP configuration file';
  16. break;
  17. case 2:
  18. $mes= 'Exceeded the size of the HTML form MAX_FILE_SIZE limit';
  19. break;
  20. case 3:
  21. $mes= 'The file was partially uploaded';
  22. break;
  23. case 4:
  24. $mes= 'No option to upload the file';
  25. break;
  26. case 6:
  27. $mes= 'Temporary directory not found';
  28. break;
  29. case 7:
  30. $mes= 'File writing failed';
  31. break;
  32. case 8:
  33. $mes= 'The uploaded file was deleted by PHP Extension program break';
  34. break;
  35. }
  36. exit($mes);
  37. }
  38. $ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
  39. //$allowExt=array('jpeg',' jpg','png','gif');
  40. //Detect the type of uploaded file
  41. if(in_array($ext,$allowExt)){
  42. exit('illegal file type');
  43. }
  44. // Check whether the file size of the uploaded file meets the specification
  45. //$maxSize = 2097152;//2M
  46. if($fileInfo['size']>$maxSize){
  47. exit('The uploaded file is too large');
  48. }
  49. //Check whether the picture is a real picture type
  50. //$flag=true;
  51. if($flag){
  52. if(!getimagesize($fileInfo['tmp_name'])){
  53. exit('not a real picture Type');
  54. }
  55. }
  56. //Check whether it is uploaded through HTTP POST
  57. if(!is_uploaded_file($fileInfo['tmp_name'])){
  58. exit('The file is not uploaded through HTTP POST ');
  59. }
  60. //$uploadPath='uploads';
  61. //If there is no such folder, create one
  62. if(!file_exists($uploadPath)){
  63. mkdir( $uploadPath, 0777, true) ;
  64. chmod( $uploadPath, 0777 );
  65. }
  66. //The new file name is unique
  67. $uniName = md5 ( uniqid( microtime(true),true) ).'.'.$ext;
  68. $destination = $uploadPath. '/'.$uniName;
  69. //The @ symbol is to prevent customers from seeing error messages
  70. if(! @move_uploaded_file($fileInfo['tmp_name'], $destination )){
  71. exit('File move failed') ;
  72. }
  73. //echo 'File uploaded successfully';
  74. //return array(
  75. // 'newName'=>$destination,
  76. // 'size'=>$fileInfo['size'],
  77. // 'type'=>$fileInfo['type']
  78. //);
  79. return $destination;
  80. }
  81. ?>
Copy code

File upload, PHP


Statement:
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