使用pcs api往免费的百度网盘上传下载文件

百度个人云盘空间大,完全免费,而且提供了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 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();
    }
}
时间: 2024-10-27 08:03:42

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

听说百度网盘可以这样下载文件

所以这个方法很简单,随便打开一个要下载的大文件,它在浏览器会有一个网址,注意,其中有一段是/disk/,把这个disk改成wap,重新进入,你会发现网页界面有点不太一样了,这个时候再去下载,就不会提示安装百度云管家,而是普通下载方式下载了!

Motrix for Mac(百度网盘加速/全能下载软件) v1.3.7最新版!

Motrix for Mac最新版第一时间在本站上线!Mac上最强大实用百度网盘加速器Motrix for Mac分享给您!Motrix for Mac是一款非常优秀的下载工具,采用Aria 2作为核心,拥有简洁明了的图形操作界面,功能强大最高支持10个任务同时下载,单任务最高支持64线程下载.支持HTTP.FTP.BT.磁力链接.百度网盘等资源的下载! Motrix for Mac安装教程 镜像包下载完毕后打开,拖动Motrix到右边的应用程序进行安装即可! 百度网盘拓展安装 首先我们需要下载

精品:AG 1.3.8 for mac 百度网盘不限速下载软件

下载:AG 1.3.8 + chrome插件 安装方法: 第一步:下载AG 1.3.8 + chrome插件中的chrome.dmg和AG1.3.8安装包: ①打开AG 1.3.8.dmg完成AG的安装(拖动到Applications文件夹进行安装) ②解压chrome.dmg,解压后随便放到一个地方 第二步:配置Chrome浏览器 ①:打开Chrome浏览器,点击偏好设置-扩展程序-勾上”开发者模式“,随后将第一步②中解压后的整个chrome文件夹拖入Chrome浏览器界面,即可完成插件的安装

用百度webuploader分片上传大文件

一般在做文件上传的时候,都是通过客户端把要上传的文件上传到服务器,此时上传的文件都在服务器内存,如果上传的是视频等大文件,那么服务器内存就很紧张,而且一般我们都是用flash或者html5做异步上传,如果文件比较大的话,即便是客户端显示文件已经上传了100%,还是会有一个比较长时间的等待,而且当前页面对服务器的请求也会被阻塞. 正常情况下,一般都是在长传完成后,在服务器直接保存. 1 public void ProcessRequest(HttpContext context) 2 { 3 co

百度网盘不限速下载神器献给你

这款软件突破限速是它的亮点,它独有的黑科技加速,突破度盘对非会员用户的限速措施,实现网盘资源不限速下载,让下载速度时刻满带宽,畅享度盘资源极限下载,而且软件无需安装,解压后即可使用,如下图找到主程序,双击打开即可,也可以通过鼠标右键将其发送到桌面快捷方式,方便下次使用. 软件下载链接: 链接:https://pan.baidu.com/s/1KWkcij7GKXstFEzjab5TwQ 提取码:p5ku 软件实测还是需要登录使用,当你复制了他人的分享链接,可以黏贴到软件中打开进行下载,你也可以登

百度网盘满速下载器:pandownload

http://pandownload.com/index.html 作者提示:1.软件使用 C++ 编写2.大文件需要等待一段时间才会有下载速度3.文件名含有特殊字符可能会下载出错,请重命名再下载4.扫码登录有BUG,请使用账号登录 原文地址:https://www.cnblogs.com/BlameKidd/p/9743278.html

百度云 百度网盘超级会员账号SVIP账号 永久免费分享 附常见的不限速网盘工具

加入组织 说实在的,免费更新了将近一年了,起初是因为自己经常要下东西,所以顺便更新一下,没想到这么多人关注. 现在自己也有半年没用过网盘了,更新的也慢了,账号失效的也快了. 那么我本身也有弄淘宝京东优惠这方面的,大家可以进这个群,以后账号在群里更新.这样呢,更新起来也有动力. 说实话这种吃力不讨好还免费的东西确实挺难坚持的. 同样也不强迫大家必须加,情况就是这么个情况,群里会分享一些淘宝京东的bug,主要还是买东西比较优惠. 账号呢每天在群里5点半更新(也会更新其他各大平台账号 包括: 迅雷 腾

打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源

前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字游戏中的公司都心知肚明. 在不需要增加任何网盘上传下载带宽和硬件设备投入的情况下,又可以用TB级别网盘这样的字眼来夺人眼球,在网络上大肆炒作一番,这比用钱买广告来推广网盘有效得多了.在这场网盘炒作中,率先“挑起事非”的两家百度网盘和360网盘获利最多. 尤其是百度网盘,应该算正式成长为国内网盘界中老

.NET破解之百度网盘批量转存工具

在百度网盘上看到好的资源,总想转存到自己的网盘,加以整理.由于分享的规则原因,手动转存非常麻烦,于是百度批量转存工具.最先搜到的是小兵的百度云转存助手,无需注册,试用版用户一次只能操作10个,而捐助用户则没有限制(说白了,就是商业版用户,无捐助无免费),它是C或C++写的,不是软柿子,说真的,我不会.于是再搜索,找到了智者软件的百度网盘批量转存助手,它是C#写的,最多支持3个,在官网下载最新版本,不能正常转存,在网上下载了一个可用版本来分析一下. 01.使用软件 在使用软件过程中,才能熟悉软件的