jQuery Mobile + PHP实现文件上传_php实例_脚本之家

很简单的一个小例子 jQuery Mobile + PHP 通过超全局 $_FILES
上传,然后用move_uploaded_file()方法把上传的图片移动到到本地服务器下的文件夹,

把php上传文件时经常碰到的几个问题总结一下吧,以后用到时不用再去找了。

下面是html和php的代码

1.先做个最简单的上传文件

复制代码 代码如下:

复制代码 代码如下:

校园祭

首页

复制代码 代码如下: 0) { echo “Return
Code: ” . $_FILES[“file”][“error”] . “
“; } else { echo “Upload: ” . $_FILES[“file”][“name”] . “
“; echo “Type: ” . $_FILES[“file”][“type”] . “
“; echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kb
“; echo “Temp file: ” . $_FILES[“file”][“tmp_name”] . “
“; if (file_exists(“upload/” . $_FILES[“file”][“name”])) { echo
$_FILES[“file”][“name”] . ” already exists. “; } else {
move_uploaded_file($_FILES[“file”][“tmp_name”], “upload/” .
$_FILES[“file”][“name”]); echo “Stored in: ” . “upload/” .
$_FILES[“file”][“name”]; } } }else { echo “Invalid file”; }?>

创新实验

复制代码 代码如下: 0) { echo “Return
Code: ” . $_FILES[“file”][“error”] . “
“; } else { echo “Upload: ” . $_FILES[“file”][“name”] . “
“; echo “Type: ” . $_FILES[“file”][“type”] . “
“; echo “Size: ” . ($_FILES[“file”][“size”] / 1024) . ” Kb
“; echo “Temp file: ” . $_FILES[“file”][“tmp_name”] . “
“; if (file_exists(“upload/” . $_FILES[“file”][“name”])) { echo
$_FILES[“file”][“name”] . ” already exists. “; } else {
move_uploaded_file($_FILES[“file”][“tmp_name”],
“upload/”.$_FILES[“file”][“name”]); echo “Stored in: ” .”upload/”.
$_FILES[“file”][“name”]; } } } ?>

代码很简单,但是使用过程中却发现一个问题,自己试了好久都上传不了询问了小伙伴后,发现问题所在是文件权限不足,从而限制了网页上传图片到文件夹中.所以解决办法就是把文件夹的权限问题解决掉.

复制代码 代码如下:$ cd /var/www$ sudo
chmod -R 777 html

ok,现在就可以将文件上传到服务器的文件夹了.

2.然后了解超级全局变量$_FILES的值

复制代码
代码如下:$_FILES[‘userfile’][‘name’]$_FILES[‘userfile’][‘type’]$_FILES[‘userfile’][‘size’]$_FILES[‘userfile’][‘tmp_name’]$_FILES[‘userfile’][‘error’]

其中,$_FILES[‘userfile’][‘error’]的所有值:

UPLOAD_ERR_OK 其值为 0,没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE 其值为 1,上传的文件超过了 php.ini 中
upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE 其值为 2,上传文件的大小超过了 HTML 表单中
MAX_FILE_SIZE 选项指定的值。

UPLOAD_ERR_PARTIAL 其值为 3,文件只有部分被上传。

UPLOAD_ERR_NO_FILE 其值为 4,没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR 其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP
5.0.3 引进。

UPLOAD_ERR_CANT_WRITE 其值为 7,文件写入失败。PHP 5.1.0 引进。

3.很多情况:需要严格判断上传文件类型

我们知道使用$_FILES[‘userfile’][‘type’]判断上传文件类型是一个很不明智的做法,因为该判断依据是文件的后缀名,任何人都可以将一个mp3文件的后缀改成jpg从而伪装成图片进行上传,因此php官方建议使用php的扩展php_fileinfo来判断文件的mime,开启拓展的方法百度一下有很多,win和linux略有不同。

4.情景一:上传文件重名后自动重命名

复制代码 代码如下:if
(file_exists(“./upload/” . $_FILES[“file”][“name”])) { do{ $suffix
=””; $suffix_length = 4; $str = “0123456789abcdefghijklmnopqrstuvwxyz”;
$len = strlen-1; //文件名后追加4个随机字符 for($i=0 ; $i

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website