使用element-ui的upload組件上傳圖片文件到七牛云的填坑記錄

最近要做一個上傳文件到七牛的功能,沒看官方文檔之前認(rèn)為蠻簡單的,看完之后就蒙比了躯肌。太亂了吧,也許是搞的太晚了破衔,沒心思認(rèn)真看文檔清女。廢話不多說了

流程:前端先get后端的uptoken,選擇文件后上傳到七牛晰筛,七牛上傳成功重定向到設(shè)置的back頁面嫡丙,end

1.前端代碼(這里參考了[http://www.tuicool.com/articles/MZzE3eU] 和 [https://smohan.im/blog/ygbey7]

//html   
 <el-form-item label="上傳附件">    
            <el-upload
              class="upload-demo"
                action="http://up.qbox.me/"
                type="drag"
                 :accept="accepts"
                :before-upload="beforeUpload"
                :on-success="handleSuccess"
                :data="form"    //uptoken 和key
              :on-remove="handleRemove"
              >
              <el-button size="small" type="primary">點擊上傳</el-button>
              <div slot="tip" class="el-upload__tip">只能上傳jpg/png/zip文件拴袭,且不超過500kb</div>
            </el-upload>
      </el-form-item>
//js
export default {
  data () {
    return {
      loading: false,
      bucketHost: 'https://***********/',   // 上傳圖片的外鏈域名,七牛設(shè)置的
      form: {    //存放獲取到uptoken 和 key
        token: '',   //需要經(jīng)過編譯,并不是直接復(fù)制七牛賬號里面的token
        key: ''       //這個key也不是七牛賬號的key曙博,key可以重命名上傳的文件名拥刻,其他作用不太記得了
      },
      accepts: 'image/jpeg, image/jpg, image/png, image/gif, application/zip, application/x-zip-compressed',
        //運行上傳圖片和zip文件
    }
  },
  mounted () {
    this.getUptoken()//先從服務(wù)器請求uptoken
  },
  methods: {
    getUptoken () {
      let _this = this
      this.$http.jsonp(this.rootUrl2 + '/uptoken.php', { emulateJSON: true })
      .then(function (response) {
        _this.form.token = response.body.data
      })
    },
    beforeUpload (file) {  //每次上傳文件之前設(shè)置key
      let suffix = file.name
      let key = encodeURI(`${suffix}`)
      this.form.key = key
      return this.form
    }

2.php代碼,這個主要3個php文件還一個src文件夾是官方php SDK里面的復(fù)制過來就可以

uptoken.php
這里要注意了:ReturnUrl 和 ReturnBody首字母一定要大寫父泳,否則重定向不成功

<?php
require_once  'autoload.php';
header('Access-Control-Allow-Origin:*');
use Qiniu\Auth;
$bucket = 'gond*******';                       //你要上傳七牛的空間名
$accessKey = '***********ak';
$secretKey = '************sk';
$auth = new Auth($accessKey, $secretKey);
//$upToken = $auth->uploadToken($bucket);
$policy = array(
//圖片上次成功后七牛重定向的鏈接般哼,不指定上傳成功會報303的錯
    'ReturnUrl' => 'https://gongyicloud.com.cn/fileinfo.php',    
    'ReturnBody' => '{"fname": $(fname)}',
);
$upToken = $auth->uploadToken($bucket, null, 3600, $policy);
$array = array('code'=>'0','data' =>$upToken);
echo $_GET['callback'].'('.json_encode($array).')';

autoload.php

<?php 
function classLoader($class)
{
    $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
    $file = __DIR__ . '/src/' . $path . '.php';

    if (file_exists($file)) {
        require_once $file;
    }
}
spl_autoload_register('classLoader');

require_once  __DIR__ . '/src/Qiniu/functions.php';

fileinfo.php

<?php 
header('Access-Control-Allow-Origin:*');
$ret = base64_decode($_GET['upload_ret']);
$cbody = json_decode($ret, true);
$dn = 'https://gongyiclo*********d.com/';    //七牛你自己設(shè)置的外鏈默認(rèn)域名
error_log(print_r($cbody, true));
$url = $dn . $cbody['fname'];
error_log($url);
$stat_ = file_get_contents($url . '?stat');
$stat = json_decode($stat_, true);
$mtype = $stat['mimeType']; 
$isImage = substr($mtype, 0, 6) == 'image/';
$array = array('code'=>'0','data' =>$url);
echo $_GET['callback'].'('.json_encode($array).')';
?>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市惠窄,隨后出現(xiàn)的幾起案子蒸眠,更是在濱河造成了極大的恐慌,老刑警劉巖睬捶,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異近刘,居然都是意外死亡擒贸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門觉渴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來介劫,“玉大人,你說我怎么就攤上這事案淋∽希” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵踢京,是天一觀的道長誉碴。 經(jīng)常有香客問我,道長瓣距,這世上最難降的妖魔是什么黔帕? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蹈丸,結(jié)果婚禮上成黄,老公的妹妹穿的比我還像新娘。我一直安慰自己逻杖,他們只是感情好奋岁,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荸百,像睡著了一般闻伶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上够话,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天虾攻,我揣著相機(jī)與錄音铡买,去河邊找鬼。 笑死霎箍,一個胖子當(dāng)著我的面吹牛奇钞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漂坏,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼景埃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了顶别?” 一聲冷哼從身側(cè)響起谷徙,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驯绎,沒想到半個月后完慧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡剩失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年屈尼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拴孤。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡脾歧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出演熟,到底是詐尸還是另有隱情鞭执,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布芒粹,位于F島的核電站兄纺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏化漆。R本人自食惡果不足惜囤热,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望获三。 院中可真熱鬧旁蔼,春花似錦、人聲如沸疙教。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贞谓。三九已至限佩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祟同。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工作喘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人晕城。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓泞坦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親砖顷。 傳聞我的和親對象是個殘疾皇子贰锁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容