手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >使用pcs api往免费的百度网盘上传下载文件的方法
使用pcs api往免费的百度网盘上传下载文件的方法
摘要:百度个人云盘空间大,完全免费,而且提供了pcsapi供调用操作文件,在平时的项目里往里面保存一些文件是很实用的。环境准备:开通读写网盘的权限...

百度个人云盘空间大,完全免费,而且提供了pcs api供调用操作文件,在平时的项目里往里面保存一些文件是很实用的。

环境准备:

开通读写网盘的权限及获取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621

百度官方pcs api文档:http://developer.baidu.com/wiki/index.php?title=docs/pcs/overview,上面有各种语言的SDK,我用的laravel5,直接导里面的php SDK还用不了,稍做了修改才能用的。

看完上面两篇文章,基本就可以使用了,下面贴出写直接把用户选择的图片预览然后upload到网盘,上传的api:

https://pcs.baidu.com/rest/2.0/pcs/file?method=upload&path=%2fapps%2wp2pcs%2f1.JPG&access_token=***红色部分是固定的,因为只允许上传到这个目录下,实际对应到网盘的目录是我的网盘/我的应用数据/wp2pcs、,无需先创建目录再上传文件,只需要指定路径,它会自动创建,如你想把图片上传到/apps/wp2pcs/img下,path就写/apps/wp2pcs/img/1.jpg就可以了。下面是把用户在网页上选择的图片,预览后直接上传到网盘的代码,参照了网上的例子:预览:

//图片上传预览 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><a>X</a><div><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 role="alert"> 上传成功.</div>'); } else { $("#reusltMsg").append('<div role="alert"> 上传失败.</div>'); } } else { $("#reusltMsg").append('<div role="alert"> 上传失败(200).</div>'); } } $('#coverBg').hide(); $('#coverDiv').hide(); } xhr.send(formData); } } else { alert("Please choose a file."); $('#coverBg').hide(); $('#coverDiv').hide(); } }

【使用pcs api往免费的百度网盘上传下载文件的方法】相关文章:

JQuery中DOM实现事件移除的方法

在JavaScript中使用开平方根的sqrt()方法

js实现带按钮的上下滚动效果

JavaScript使用addEventListener添加事件监听用法实例

使用RequireJS优化JavaScript引用代码的方法

jquery预加载图片的方法

JavaScript中使用Math.PI圆周率属性的方法

js判断鼠标位置是否在某个div中的方法

JS动态增删表格行的方法

Nodejs中session的简单使用及通过session实现身份验证的方法

精品推荐
分类导航