formatuu 发表于 2017-3-23 08:28:05

PHP 文件上传下载

  1. php.ini  配置    

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;    资源限制
;;;;;;;;;;;;;;;;;;;
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 30   
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = 60
; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M
  max_execution_time每个脚本页面完成执行操作的最大时间,单位是秒。如果为-1,则没有限制
  max_input_time每个脚本页面处理请求数据的最大时间,单位是秒。如果为-1,则没有限制
  memory_limit一个脚本页面所能消耗的最大内存

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 8M
  PHP通过表单POST所能接收的最大值,包括表单里的所有项。

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
upload_tmp_dir = "e:/wamp/tmp"
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
  file_uploads是否允许HTTP上传,默认为on,即为开启,无需修改
  upload_tmp_dir文件上传时的临时存储目录。如果没有指定,会用系统默认的临时文件夹
  upload_max_filesize允许上传的文件的最大值
  2. 页面设置    3个条件缺一不可
  (1)type属性设置为file
  (2)form的enctype="multipart/form-data"
  (3)method="post"

<form action="" method="post" enctype="multipart/form-data">
<input name="filename" type="file"/>
<input type="submit" value="enter"/>
</form>
  <input type="hidden" name="MAX_FILE_SIZE" value="1024000"/>
  建议在上传表单中增加一个hidden隐藏域,允许上传的最大字节数。当文件上传大于1MB时,$FILES中的error值将返回2
  3. bool move_uploaded_file(string filename,string destination)  函数是PHP中专门用来上传文件的。
  filename客户端源文件的文件名及其路径,上传文件的临时文件名,即$_FILES
  destination上传后保存在服务器的新的路径和名称
  move_uploaded_file() 作用只是将文件换个地方保存,这是出于安全的考虑
  bool is_uploaded_file(string filename)  判断文件是否为POST上传

<?php
header('Content-Type:text/html;charset=utf-8');
$tmparr=$_FILES['filename'];
if($tmparr['error']==0){
if (is_uploaded_file($tmparr['tmp_name'])) {
if (move_uploaded_file($tmparr['tmp_name'], $tmparr['name'])) {
echo "上传成功";
}else {
echo "<script>alert('文件不合法');history.go(-1);</script>";
}
}else {
echo "<script>alert('非法操作');history.go(-1);</script>";
}
}else {
echo "<script>alert('上传错误,错误类型: ".$tmparr['error']."');history.go(-1);</script>";
}
?>
  $_FILES[]['name']:           客户端源文件名
  $_FILES[]['type']:             上传文件的类型
  $_FILES[]['size']:              上传文件的字节数
  $_FILES[]['tmp_name']:    上传后在服务器上的临时存储文件名
  $_FILES[]['error']:             上传文件的错误代码
  4.  实现下载  实现下载最常用的方法通过链接下载和通过header()函数下载。
  echo "<a href='".$path.$filen."'>".$filen."</a><br>";
  "" '' .三者如何配合使用?
页: [1]
查看完整版本: PHP 文件上传下载