Baidu 개인 클라우드 디스크는 공간이 넓고 완전 무료이며 파일 호출 및 운영을 위한 PCS API를 제공하여 일상 프로젝트에서 일부 파일을 저장하는 데 매우 실용적입니다.
환경 대비:
네트워크 디스크 권한 읽기 및 쓰기를 활성화하고 access_token을 얻습니다: http://blog.csdn.net/langyuezhang/article/details/47206621
Baidu 공식 PC API 문서: http://developer.baidu.com/wiki/index.php?title=docs/pcs/overview. 다양한 언어의 SDK가 있으며 php를 직접 가져옵니다. SDK는 아직 사용할 수 없습니다. 사용하기 전에 약간의 수정이 필요합니다.
위 두 글을 읽고 나면 기본적으로 사용할 수 있습니다. 사용자가 선택한 이미지를 직접 미리보기하고 네트워크 디스크에 업로드하는 API는 다음과 같습니다.
https://pcs.baidu.com/rest/2.0/pcs/file?method=upload&path=%2fapps%2wp2pcs%2f1.JPG&access_token=***사실 이 디렉터리에는 업로드만 허용되므로 빨간색 부분은 수정되었습니다. , 네트워크 디스크에 해당하는 디렉터리는 My Network Disk/My Application Data/wp2pcs입니다. 파일을 업로드하기 전에 디렉터리를 생성할 필요는 없으며 경로만 지정하면 자동으로 생성됩니다. /apps/wp2pcs/에 사진을 업로드하고 싶습니다. img 아래에 /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(); } }