Home  >  Article  >  Backend Development  >  Master Notes: PHP Upload File Code_PHP Tutorial

Master Notes: PHP Upload File Code_PHP Tutorial

WBOY
WBOYOriginal
2016-07-15 13:27:23876browse

PHP is still relatively commonly used, and everyone must know its powerful functions. Here we implement PHP upload file code analysis. The reason why it is difficult to implement an upload progress bar in PHP is because when we upload files to the server, we have to wait until all files are sent to the server before executing the corresponding PHP file. Before this, the file data was saved in a temporary file, and PHP could not obtain the path and size of this file.

Starting from Actionscript 2.0, Flash supports file upload and download. Although we cannot get the file upload progress on the server side, we can get the file sending progress on the server side. Based on this principle, you can use Flash to create an upload progress bar effect. I have seen some information on the Internet, but I feel it is flawed. So I did some research myself, strengthened the security and robustness of the program on the basis of predecessors, and added some customizable parameters. At present, there are two methods that I know of. One is to use the APC extension module written by Rasmus Lerdorf, the founder of PHP. The other method is to use the PECL extension module uploadprogress to implement it. Here are two examples of their respective implementations for reference. More Flexible application can be modified according to your needs.

php uploads files to determine whether the path to be stored exists is_dir(), if the file type meets the requirements explode('.',name)array() in_array(), if the file size meets the requirements $ _FILES[size] can be uploaded by move_uploaded_file ($_FILES[]['tmp_name'], the path and file name to be stored). If the original name is stored, use $_FILES[]['name'] directly or rename: time().

PHP upload file code:

<ol class="dp-xml">
<li class="alt"><span><span>function uploafile($path,$</span><span class="attribute"><font color="#ff0000">filesize</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">10241000</font></span><span>,$</span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">1</font></span><span>)  </span></span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span>if(!empty($path) && !file_exists($path))  </span></li>
<li class=""><span>{  </span></li>
<li class="alt"><span> echo '上传文件的路径不存在';exit;  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>//允许上传的文件类型  </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">filetype</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">array</font></span><span> </span>
</li>
<li class="alt"><span>(  </span></li>
<li class="">
<span> </span><span class="attribute"><font color="#ff0000">1</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array('gif','png','jpg','jpeg','bmp'),  </span>
</li>
<li class="alt">
<span> </span><span class="attribute"><font color="#ff0000">2</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array('swf','flv'),  </span>
</li>
<li class="">
<span> </span><span class="attribute"><font color="#ff0000">3</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array('rm','rmvb','avi','wmv','mpg','asf','mp3','wma','wmv','mid'),  </span>
</li>
<li class="alt">
<span> </span><span class="attribute"><font color="#ff0000">4</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array('txt','doc','xls','ppt','pdf','xml','rar','zip','gzip','cab','iso','sql'),  </span>
</li>
<li class="">
<span> </span><span class="attribute"><font color="#ff0000">6</font></span><span> =</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array('exe','com','scr','bat')  </span>
</li>
<li class="alt"><span>);  </span></li>
<li class=""><span>//上传文件类型数组合并  </span></li>
<li class="alt"><span>$filetype[5] = array_merge($filetype[2],$filetype[3]);  </span></li>
<li class=""><span>//获得$_FILES数组的所有key  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">arr_key</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">array_keys</font></span><span>($_FILES);  </span>
</li>
<li class=""><span>//判断要上传的文件名称  </span></li>
<li class="alt">
<span>$</span><span class="attribute"><font color="#ff0000">file</font></span><span> = $_FILES[$arr_key[0]];  </span>
</li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">exten</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">check_file_type</font></span><span>($file['name']);  </span>
</li>
<li class="alt"><span>//判断文件上传类型  </span></li>
<li class=""><span>if($type!=7 && !in_array($exten,$filetype[$type]))  </span></li>
<li class="alt"><span>{  </span></li>
<li class=""><span> echo $file['name'].'的文件类型不符合要求!';exit;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>//判断文件大小  </span></li>
<li class="alt">
<span>if($file['size']</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>$filesize)  </span>
</li>
<li class=""><span>{  </span></li>
<li class="alt"><span> echo $file['size'].'的文件大小不能超过'.$filesize.'字节';exit;  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>//开始上传  </span></li>
<li class=""><span>//move_uploaded_file($file['tmp_name'],$path.$file['name']);  </span></li>
<li class="alt"><span>//为了避免覆盖,重命在旦夕名该文件  </span></li>
<li class="">
<span>$</span><span class="attribute"><font color="#ff0000">newname</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">time</font></span><span>().'.'.$exten;  </span>
</li>
<li class="alt"><span>move_uploaded_file($file['tmp_name'],$path.$newname);  </span></li>
<li class=""><span>return $newname;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span> </span></li>
<li class="alt">
<span>echo uploafile('',$</span><span class="attribute"><font color="#ff0000">filesize</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">10241000</font></span><span>,$</span><span class="attribute"><font color="#ff0000">type</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">3</font></span><span>);  </span>
</li>
<li class="">
<span></span><span class="tag"><strong><font color="#006699">?></font></strong></span><span> </span>
</li>
</ol>

The above is the detailed PHP file upload code, it is very simple.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446545.htmlTechArticlePHP is still relatively commonly used, and everyone must know its powerful functions. We will implement PHP upload here File code analysis. The reason why it is difficult to implement the upload progress bar in PHP is because...
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