在網站開發中,圖片上傳是非常常見的功能之一,而利用PHP與jQuery,再加上Ajax實現圖片上傳則更是輕松便捷。本篇文章將針對PHP、jQuery和Ajax的聯合應用,來為讀者們詳細介紹實現圖片上傳的過程以及注意事項。
上傳圖片的第一步很簡單,只需在HTML代碼中聲明一個表單,里面要包括一個type為file的input元素和一個submit按鈕。HTML表單本身并不會完成上傳的功能,因此需要后端來完成這一步驟。
<!-- HTML表單代碼 --> <form id="uploadForm"> <input type="file" id="uploadInput" name="myfile" /> <input type="submit" id="uploadBtn" value="上傳" /> </form>在得到用戶上傳文件后,需要將用戶上傳的文件上傳到服務器上。此處利用PHP中的$_FILES來處理上傳文件的信息。下面是PHP處理上傳文件的代碼:這里值得注意的是,在服務器上為了讓PHP文件能夠保存用戶上傳的文件,必須設置合適的文件夾權限,這個權限可以是0755或者0777。 接下來是AJAX能夠發揮的作用,這個功能可以在不刷新頁面的情況下實現上傳文件并顯示上傳結果。我們首先得在jQuery中綁定上傳事件:
<!-- JavaScript代碼 --> $('#uploadBtn').on('click', function() { var formData = new FormData($('#uploadForm')[0]); $.ajax({ url: '/upload.php', type: 'POST', data: formData, async: false, cache: false, contentType: false, processData: false, success: function (returndata) { alert(returndata); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert('上傳失敗,請檢查網絡后重試'); } }); return false; });注意上述代碼中async、cache、contentType、processData等幾個參數的設置,在這個過程中是非常關鍵的。 其中contentType和processData用于規定AJAX傳遞給后端的數據是什么類型,contentType建議設置為false,這樣jQuery會自動判斷數據類型并選擇合適的方式發送。processData則是用于指示jQuery不要處理發送數據,用于配合contentType使用。 最后還有幾點需要注意的是,在這個過程中盡量避免出現跨域問題,如果確存在跨域問題,需要在代碼中添加跨域設置。同時在設計完整路徑之前,需要確定文件在服務器上存在的確切位置,這樣可以避免出現文件遺失情況。