ajax文件上传

2017-11-10  本文已影响0人  two_steps

上传表单的按钮如果是button,需要把类型定为button,否则form表单就不会通过ajax程序传输数据,因为它的默认类型是submit

如果保存文件的根目录是新创建的,则需要对这个目录授权(可读可写可操作),否则,上传文件会提示根目录不存在


ajax代码

//给表单中上传文件的input标签中添加

onchange

事件


    function uploads(){

    var url = "{:U('Fink/upload')}";

    var data = new FormData($('#f_form')[0]);

    $.ajax({

        url:url,

        data:data,

        type:'POST',

        dataType:'json',

        processData: false,

        contentType: false,

        success:function(data){

        //把后台返回数据的文件地址重新赋值给隐藏域,

        //作为下一步提交表单时,文件地址的value值

        $('#cover').val(data.fileUrl);

        alert(data.msg);

        }

    });

}

表单:input必须要有name值,否则不会上传文件

ajax代码:$('#f_form')[0],$('#f_form')是用id选择器选中表单,[0]是一个下标,表示表单中第一个类型为file的input标签

后台代码:

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);

}

}

}

}

上一篇下一篇

猜你喜欢

热点阅读