注意表单的Form标签中一定要添加 enctype=”multipart/form-data”文件才能上传。因为表单提交到当前模块的upload操作方法,所以我们在模块类里面添加下面的upload方法即可:
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都做网站、元宝网络推广、成都小程序开发、元宝网络营销、元宝企业策划、元宝品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供元宝建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
Public function upload(){
import('ORG.Net.UploadFile');
$upload = new UploadFile();// 实例化上传类
$upload-maxSize = 3145728 ;// 设置附件上传大小
$upload-allowExts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload-savePath = './Public/Uploads/';// 设置附件上传目录
if(!$upload-upload()) {// 上传错误提示错误信息
$this-error($upload-getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload-getUploadFileInfo();
}
// 保存表单数据 包括附件数据
$User = M("User"); // 实例化User对象
$User-create(); // 创建数据对象
$User-photo = $info[0]['savename']; // 保存上传的照片根据需要自行组装
$User-add(); // 写入用户数据到数据库
$this-success('数据保存成功!');
}
不知道你是传的什么文件,看你的标题和属性是保存在机器的哪里的,如果是desktop.ini等文件里面的,上传后肯定会丢失的,因为那些文件没有上传。如果标题和属性是保存在文件里面的,例如JPG文件的光圈大小等参数,这类信息上传后不会丢失,如果是这类信息丢失了,肯定是上传的程序对文件有再次加工(比如我网站上的JPG上传就会自动调整大小),如果要避免这个就需要修改上传的PHP程序。
form name="form1" enctype="multipart/form-data" action="upload.php" method="post"
p/p
上传到files文件夹中:
input name="upload_file" id="upload_file" type="file" style="border-color:#99CCCC; background-color:#E0EEEE;"
input type="submit" value="上传文件" name="submit"
/form
e盘要有个files文件
upload.php
?
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
if($upload_file){
$file_size_max = 2000*1000;// 2M限制文件上传最大容量(bytes)
$store_dir = "E:/files";// 上传文件的储存位置
$accept_overwrite = 1;//是否允许覆盖相同文件
// 检查文件大小
if ($upload_file_size $file_size_max) {
echo "对不起,您的文件容量大于规定";
exit;
}
// 检查读写文件
if (file_exists($store_dir . $upload_file_name) !$accept_overwrite) {
Echo "存在相同文件名的文件";
exit;
}
//复制文件到指定目录
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "复制文件失败";
exit;
}
}
Echo "p您上传了文件:";
echo $_FILES['upload_file']['name'];
echo "br";
//客户端机器文件的原名称。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
echo "br";
Echo "上传文件大小:";
echo $_FILES['upload_file']['size'];
//已上传文件的大小,单位为字节。
echo "br";
Echo "文件上传后被临时储存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在服务端储存的临时文件名。
echo "br";
$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0:
Echo "上传成功"; break;
case 1:
Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."; break;
case 2:
Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";break;
case 3:
Echo "文件只有部分被上传";break;
case 4:
Echo "没有文件被上传";break;
}
?
面向过程编程将许多html代码冗杂在一起,是在是不好去解释。
你可以试着将业务逻辑与显示逻辑分离开后再处理,这样会更方便排错