使用pcs api往免費(fèi)的百度網(wǎng)盤(pán)上傳下載文件的方法
百度個(gè)人云盤(pán)空間大,完全免費(fèi),而且提供了pcs api供調(diào)用操作文件,在平時(shí)的項(xiàng)目里往里面保存一些文件是很實(shí)用的。
環(huán)境準(zhǔn)備:
開(kāi)通讀寫(xiě)網(wǎng)盤(pán)的權(quán)限及獲取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621
百度官方pcs api文檔:http://developer.baidu.com/wiki/index.php?title=docs/pcs/overview,上面有各種語(yǔ)言的SDK,我用的laravel5,直接導(dǎo)里面的php SDK還用不了,稍做了修改才能用的。
看完上面兩篇文章,基本就可以使用了,下面貼出寫(xiě)直接把用戶選擇的圖片預(yù)覽然后upload到網(wǎng)盤(pán),上傳的api:
https://pcs.baidu.com/rest/2.0/pcs/file?method=upload&path=%2fapps%2wp2pcs%2f1.JPG&access_token=***紅色部分是固定的,因?yàn)橹辉试S上傳到這個(gè)目錄下,實(shí)際對(duì)應(yīng)到網(wǎng)盤(pán)的目錄是我的網(wǎng)盤(pán)/我的應(yīng)用數(shù)據(jù)/wp2pcs、,無(wú)需先創(chuàng)建目錄再上傳文件,只需要指定路徑,它會(huì)自動(dòng)創(chuàng)建,如你想把圖片上傳到/apps/wp2pcs/img下,path就寫(xiě)/apps/wp2pcs/img/1.jpg就可以了。下面是把用戶在網(wǎng)頁(yè)上選擇的圖片,預(yù)覽后直接上傳到網(wǎng)盤(pán)的代碼,參照了網(wǎng)上的例子:預(yù)覽:
//圖片上傳預(yù)覽 IE是用了濾鏡。 function previewImage(file, product) { getPhotopty(); console.log("previewImage"); uploadAndSubmit(product); var div = document.getElementById('preview' + product); var fileName = file.value; //upload(); if (file.files) { var i = 0; var funAppendImage = function () { var _file = file.files[i]; if (_file) { var reader = new FileReader() reader.onload = function (evt) { fileName = _file.name; div.innerHTML += '<div class="col-xs-6 col-md-3"><a style="float:right;cursor:pointer;" onclick="del(this)">X</a><div class="thumbnail"><img id=imghead' + product + fileName + '></div></div>'; var img = document.getElementById('imghead' + product + fileName); img.src = evt.target.result; i++; funAppendImage(); } reader.readAsDataURL(_file); } }; funAppendImage(); } $('#coverBg').show(); $('#coverDiv').show(); //$("#uploadFrm" + product).submit(); }
上傳:
var access_token = "***********"; var baseUrl = "https://c.pcs.baidu.com/rest/2.0/pcs/"; function uploadAndSubmit(product) { console.log("start uploadAndSubmit"); if (typeof FileReader == 'undefined') { alert("你的瀏覽器不支持FileReader接口!"); } var taskName = $("#txtTask").val() + "-" + $("#txtTask2").val(); var form = document.forms["uploadFrm" + product]; console.log("form:" + form); var fileCtrl = "filectrl" + product; console.log("filectrl:" + fileCtrl); //if (form[fileCtrl].files.length > 0) console.log($("#filectrl" + product)[0]); if ($("#filectrl" + product)[0].files.length > 0) { for (var i = 0; i < $("#filectrl" + product)[0].files.length; i++) { var file = form[fileCtrl].files[i]; console.log(file.name); var filePath = "%2fapps%2fwp2pcs%2f" + taskName + "%2f" + file.name; console.log("add exif info to db"); getExifIinfo(taskName, file, product, filePath); //document.getElementById("bytesRead").textContent = file.size; console.log("start XMLHttpRequest"); var xhr = new XMLHttpRequest(); console.log(access_token); var url = baseUrl + "file?method=upload&path=%2fapps%2fwp2pcs%2f" + taskName + "%2f" + file.name + "&access_token=" + access_token + "&ondup=overwrite&count=" + i; console.log(url); xhr.open("POST", url, true); var formData = new FormData(); formData.append("file", file); console.log("onreadystatechange"); xhr.onreadystatechange = function () { console.log("onreadystatechange start"); //console.log(xhr.status); if (xhr.readyState == 4) { if (xhr.status == 200) { console.log("upload complete"); console.log("response: " + xhr.responseText); var result = $.parseJSON(xhr.responseText); if (result.hasOwnProperty("path")) { $("#reusltMsg").append('<div class="alert alert-success" role="alert"> 上傳成功.</div>'); } else { $("#reusltMsg").append('<div class="alert alert-danger" role="alert"> 上傳失敗.</div>'); } } else { $("#reusltMsg").append('<div class="alert alert-danger" role="alert"> 上傳失敗(200).</div>'); } } $('#coverBg').hide(); $('#coverDiv').hide(); } xhr.send(formData); } } else { alert("Please choose a file."); $('#coverBg').hide(); $('#coverDiv').hide(); } }
- 用asp實(shí)現(xiàn)文件瀏覽、上傳、下載的程序
- Jsp頁(yè)面實(shí)現(xiàn)文件上傳下載類代碼
- asp.net Web Services上傳和下載文件(完整代碼)
- Flex與.NET互操作 使用FileReference+HttpHandler實(shí)現(xiàn)文件上傳/下載
- asp.net 多文件上傳,兼容IE6/7/8,提供完整代碼下載
- Asp.net實(shí)現(xiàn)MVC處理文件的上傳下載功能實(shí)例教程
- JavaWeb實(shí)現(xiàn)文件上傳下載功能實(shí)例解析
- JAVA使用commos-fileupload實(shí)現(xiàn)文件上傳與下載實(shí)例解析
- Java FTPClient實(shí)現(xiàn)文件上傳下載
- C++文件上傳、下載工具
相關(guān)文章
JS將時(shí)間秒轉(zhuǎn)換成天小時(shí)分鐘秒的字符串
最近小編接到這樣的項(xiàng)目需求,接口返回的數(shù)據(jù)中時(shí)間單位為秒,但前端顯示的時(shí)候需要更人性化的帶有單位(天,小時(shí),分鐘,秒)的字符串;下面小編給大家?guī)?lái)實(shí)例代碼,感興趣的朋友跟隨小編一起看看吧2019-07-07JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)教程
這篇文章主要介紹了JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)教程的相關(guān)資料,需要的朋友可以參考下2016-03-03uniapp自定義網(wǎng)絡(luò)檢測(cè)組件項(xiàng)目實(shí)戰(zhàn)總結(jié)分析
這篇文章主要為大家介紹了uniapp自定義網(wǎng)絡(luò)檢測(cè)組件項(xiàng)目實(shí)戰(zhàn)總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09