注意:在linux要给上传文件的文件夹读写权限
这种写法也很好
var form=document.getElementById("form1");
var fd =new FormData(form);
var attach_url = '';
var attach = '';
$.ajax({
url: "{:U('Task/upload')}",
type: "POST",
data: fd,
async: false,
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false, // 告诉jQuery不要去设置Content-Type请求头
success: function(r,status,xhr){
attach_url = r.data.url;
attach = r.data.name;
console.log(r);
}
});
一.html代码
(推荐这个)
function uploads(){
//new对象处理文件上传表单提交
//‘#form1’是form的id,[0]是文件上传的下标,
//我这里只有一个input type=file所以就是[0]
//这个[0]指的是第一个文件上传表单,不包含普通的input表单
var data = new FormData($('#form')[0]);
$.ajax({
url: "{:U('Article/upload')}",//文件地址
type: 'POST',
cache: false,//关闭缓存
data: data,
//processData 默认为false,当设置为true的时候,
//jQuery ajax 提交的时候不会序列化 data,而是直接使用data
//processData设置为false。因为data值是FormData对象,不需要对数据做处理。
processData: false,
//contentType设置为false。因为是由<form>表单构造的FormData对象,
//且已经声明了属性enctype="multipart/form-data",所以这里设置为false
contentType: false,
success:function(data){
$('#cover').val(data.file_url);
alert(data.msg);
}
});
function uploads(id){
//new对象处理文件上传表单提交
//‘#form1’是form的id,[0]是文件上传的下标,
//我这里只有一个input type=file所以就是[0]
//这个[0]指的是第一个文件上传表单,不包含普通的input表单
var data = new FormData();
//第一个参数是input的ID可以自定义,第二个也是input的ID不是hiform的
data.append(id,$("#"+id)[0].files[0]);
$.ajax({
url: "{:U('upload')}",//文件地址
type: 'POST',
cache: false,//关闭缓存
data: data,
//processData 默认为false,当设置为true的时候,
//jQuery ajax 提交的时候不会序列化 data,而是直接使用data
//processData设置为false。因为data值是FormData对象,不需要对数据做处理。
processData: false,
//contentType设置为false。因为是由<form>表单构造的FormData对象,
//且已经声明了属性enctype="multipart/form-data",所以这里设置为false
contentType: false,
success:function(r){
// var url=$('#fileURL').val(data.fileURL);
console.log(r);
alert(r.msg);
}
});
}
public function upload(){
if(IS_POST){
$file = $_FILES;
foreach ($file as $k => $v) {
//生成唯一的ID
$filename = md5(uniqid(microtime(true),true));
if($file[$k]['error']==0){
$config=array(
'maxSize'=>70000000,
'exts'=>array('jpg','jpeg','png','gif'),
'rootPath'=>'./uploads/',
//保存的文件名
'saveName' =>$filename,
//开启子目录
'subName' =>array('date','Ymd'),
);
$upload=new \Think\Upload($config);
$info=$upload->upload();
if($info){
//域名
$ym='http://yun.zjwhtb.net';
//根目录
$rootPath=substr($config['rootPath'],1);
//文件保存路径
$savepath=$info[$k]['savepath'];
//文件名称
$savename=$info[$k]['savename'];
$fileUrl = $ym.$rootPath.$savepath.$savename;
$data['msg']='文件上传成功';
$data['fileUrl']=$fileUrl;
// dump($data);die;
$this->ajaxReturn($data);
}else{
$data['msg']=$upload->getError();
// dump($data);die;
$this->ajaxReturn($data);
}
}else{
$data['msg']='文件上传错误';
// dump($data);die;
$this->ajaxReturn($data);
}
}
}else{
$this->display();
}
}