thinkphp5 ajax圖片文件異步上傳


https://blog.csdn.net/java_qq_99811494/article/details/79681742

原文:http://vtuce.cn/p/78.html

 

html:

  1.  
    <form id="form">
  2.  
    <input type="file" name="image">
  3.  
    </form>

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

jquery:

  1.  
    $( document).on("change","#form input",function (e) {
  2.  
    upload({
  3.  
    url:'vtuce.cn/upload',
  4.  
    formNode:this.parentNode,
  5.  
    token:'hellothisismytokenstring',
  6.  
    sCallback:function (res) {
  7.  
    console.log(res);
  8.  
    }
  9.  
    })
  10.  
    });
  11.  
    function upload(params) {
  12.  
    var data = new FormData(params.formNode);
  13.  
    $.ajax({
  14.  
    url:params.url,
  15.  
    type:'POST',
  16.  
    headers:{token:params.token},
  17.  
    data:data,
  18.  
    dataType:'JSON', //定義返回結果的類型
  19.  
    cache: false,
  20.  
    contentType:false,
  21.  
    processData:false,
  22.  
    success:function (res) {
  23.  
    params.sCallback && params.sCallback(res);
  24.  
    }
  25.  
    });
  26.  
    }

thinkphp5:

  1.  
    public function upload(){
  2.  
    $token = Request:: instance()->header( 'token');
  3.  
    //$token權限校驗。。。
  4.  
    $file = Request:: instance()->file( 'image');
  5.  
    $type = explode( '/',$file->getInfo('type'));
  6.  
    if($type[0] != 'image'){//文件類型過濾
  7.  
    return 'error';
  8.  
    }
  9.  
    if($file->getInfo('size')>102400){//圖片大小過濾
  10.  
    return 'error';
  11.  
    } else{
  12.  
    $ext = $type[ 1];
  13.  
    $filename = 'somename.'.$ext;
  14.  
    move_uploaded_file($file->getInfo( 'tmp_name'),$filename);
  15.  
    return 'ok';
  16.  
    }
  17.  
    }
  18.  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM