1. 程式人生 > >thinkphp5 ajax圖片檔案非同步上傳

thinkphp5 ajax圖片檔案非同步上傳

html:

<form id="form">
    <input type="file" name="image">
</form>

這裡依然需要form標籤包裹,雖然並不用它來提交。如果非要去掉form,就只能用原生的XMLHttpRequest來實現,但是這傢伙是同步的。

jquery:

$(document).on("change","#form input",function (e) {
    upload({
        url:'vtuce.cn/upload',
        formNode:this.parentNode,
        token
:'hellothisismytokenstring', sCallback:function (res) { console.log(res); } }) }); function upload(params) { var data = new FormData(params.formNode); $.ajax({ url:params.url, type:'POST', headers:{token:params.token}, data:data
, dataType:'JSON', //定義返回結果的型別 cache:false, contentType:false, processData:false, success:function (res) { params.sCallback && params.sCallback(res); } }); }

thinkphp5:

public function upload(){
$token = Request::instance()->header('token'
); //$token許可權校驗。。。 $file = Request::instance()->file('image'); $type = explode('/',$file->getInfo('type')); if($type[0] != 'image'){//檔案型別過濾 return 'error'; } if($file->getInfo('size')>102400){//圖片大小過濾 return 'error'; }else{ $ext = $type[1]; $filename = 'somename.'.$ext; move_uploaded_file($file->getInfo('tmp_name'),$filename); return 'ok'; } }