網站靜態檔案儲存在又拍雲,之前上傳是透過又拍雲的的FORM API進行。
當產品經理歪著腦袋走向你的時候,哎呀呀,這用戶資訊這裡,上傳要無刷新的效果了。
這他***,自己偷偷抱怨一會兒會,怎麼搞喃?聽說這傢伙要一個好聽的名字,非同步上傳,高大上檔次挺像我的。
根據我們的觀察,這裡有兩個重點:
①、怎麼實現異步上傳
②、怎麼上傳到又拍雲
首先的FormData對象,據說,這傢伙不支援ie6 7的,ie8就不太清楚了,據說哈,說錯了不負責的。
不過喃,我們也不用考慮辣麼多,前段時間都聽說淘寶都要放棄ie6 7了,so 甭考慮辣麼多了。 ie6 7抓ta大概都要罵ta小婊砸,竟然敢不支持我。
FormData是誰,這裡就不多介紹了,可以自行百度。
我們先來看看view層怎麼使用FormData這個小婊子砸
<input type="file" accept="image/jpg,image/jpeg,image/png,image/gif"> <input type="hidden" name="file">
如你所想,僅僅是一個input上傳按鈕和一個我們預留的準備接收圖片地址的隱藏input
下面來看看JS是怎麼憤怒的吧
<script type="text/javascript"> function($){ //上传 $("#upload").on("change", function () { //构造FormData对象并赋值 var formData = new FormData(); formData.append("policy", "//controller层传递过来upYun的policy配置"); formData.append("signature", "//controller层传递过来upyun的signature配置"); formData.append("file", $("#upload")[0].files[0]); $.ajax({ url : "//处理上传的后端程序地址", type : "POST", data : formData, processData : false, contentType : false, beforeSend: function () { //可以做一些正在上传的效果 }, success : function(data) { //data,我们这里是异步上传到后端程序所返回的图片地址 }, error : function(responseStr) { console.log(responseStr); } }); }); }($); </script>
到此,我們已經實現了異步上傳的前端代碼,包括又拍雲所需的參數policy和signature
剩下的實現上傳到又拍雲就簡單了,可以參考
https://github.com/upyun/php-sdk 來處理
以上就介紹了又拍雲非同步上傳實例教學詳解,包含了又拍雲,上傳方面的內容,希望對PHP教學有興趣的朋友有所幫助。