这片笔记讲php文件上传的功能及遇到的一些问题。
先看php文件:
0) //$_FILES["file"]["error"]>0:有错
{
$backinfo = "错误:: " . $_FILES["file"]["error"] . "
";
} else{
// 如果没有 upfiles 目录,你需要创建它,upfiles 目录权限为 777
$dir = iconv("UTF-8", "GBK", "../upfiles");
if (!file_exists($dir)){
mkdir ($dir,0777,true);
}
// 判断当期目录下的 upfiles 目录是否存在该文件
if (file_exists("../upfiles/" . $_FILES["file"]["name"]))
{
$backinfo = $_FILES["file"]["name"] . " 文件已经存在。 ";
}
else
{
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "../upfiles/" . $_FILES["file"]["name"]);
$backinfo = $_FILES["file"]["name"] ."文件已上传";
}
}
}
else
{
$backinfo = "非法的文件格式";
}
echo sprintf($backinfo);
相关知识点:
1.$_FILES["file"]["name"]:文件名称
2.$_FILES["file"]["type"]:文件格式
3.
$_FILES["file"]["size"]:文件大小
4.$_FILES["file"]["error"]:文件错误代码
0:表示没有错误,下面几种对应不同的错误
1 : 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值.
2 : 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
3 : 文件只有部分被上传
4 : 没有文件被上传
$_FILES["file"]["error"] >0就是表示有错误发生
5.
$_FILES["file"]["tmp_name"]:文件临时存储位置
6.
explode(separator,string,limit)函数:把字符串打散为数组
separator:必需。规定在哪里分割字符串。
string:必需。要分割的字符串。
limit:可选。规定所返回的数组元素的数目。
可能的值:
大于 0 - 返回包含最多 limit 个元素的数组
小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组
0 - 返回包含一个元素的数组
7.end()函数:输出数组中最后一个值
相关:
current()-返回数组中的当前元素的值
next()-将内部指针指向数组中的下一个元素,并输出
prev()-将内部指针指向数组中的上一个元素,并输出
reset()-将内部指针指向数组中的第一个元素,并输出
each()-返回当前元素的键名和键值,并将内部指针向前移动
示例:
"; // 当前元素是 Bill
echo next($people) . "
"; // Bill 的下一个元素是 Steve
echo current($people) . "
"; // 现在当前元素是 Steve
echo prev($people) . "
"; // Steve 的上一个元素是 Bill
echo end($people) . "
"; // 最后一个元素是 David
echo prev($people) . "
"; // David 之前的元素是 Mark
echo current($people) . "
"; // 目前的当前元素是 Mark
echo reset($people) . "
"; // 把内部指针移动到数组的首个元素,即 Bill
echo next($people) . "
"; // Bill 的下一个元素是 Steve
print_r (each($people)); // 返回当前元素的键名和键值(目前是 Steve),并向前移动内部指针
?>
8.type: 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。
9.iconv():iconv方法是为了防止中文乱码,保证可以创建识别中文目录,不用iconv方法格式的话,将无法创建中文目录
10.file_exists(path) :函数检查文件或目录是否存在,如果指定的文件或目录存在则返回 true,否则返回 false。
11.mkdir(path,mode,recursive,context):函数创建目录,若成功,则返回true,否则返回false。
path:必需。规定要创建的目录的名称及路径。
mode:必需。规定权限。默认是0777。
recursive:必需。规定是否设置递归模式。
context:必需。规定文件句柄的环境。Context是可修改流的行为的一套选项。
12.move_uploaded_file(file,newloc):将上传的文件移动到新位置。
file:必需。规定要移动的文件。
newloc:必需。规定文件的新位置。
接下来看一下两种方式的做法:
使用form上传时,enctype属性值必须为multipart/form-data。
html:
结果:
html:
js:
$("#file-btn").click(function () {
$.ajaxFileUpload ({
url:'./php/upload.php',
secureuri:false, //是否启用安全提交,默认为false。
fileElementId:'file',//与页面处理代码中file相对应的ID值
dataType: 'text', //返回数据类型:text,xml,json,html,scritp,jsonp五种
success: function (data) {
alert(data);
}
})
})
结果:
使用ajaxFileUpload.js遇到的问题:
“jQuery.handleError is not a function”
网上查找了一下这个错误的原因:版本1.4.2之前的版本才有handlerError方法。
解决办法:在ajaxFileUpload.js文件开头添加这一段代码(红色代码):