thinkphp5 ajax圖片檔案非同步上傳
阿新 • • 發佈:2019-01-02
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';
}
}