ajax 上傳檔案到php
作為一個開發人員,踩坑是必要的,不踩坑是不長進的。今天我們就來談談ajax上傳檔案時可能遇到的幾個大坑。
html 檔案:
</div>
<input type="file" id="fileloader" name="file" />
<button id="fileuploader">開始上傳</button>
</div>
$(function(){
$('#fileuploader').click(function () {
//獲取上傳檔案的相關資訊,得到的資料是陣列格式
var fileArray = document.getElementById('fileloader').files;
var formData = new FormData();
for(var i=0; i<fileArray.length; i++){
formData.append("fileArray", fileArray[i]);
}
console.log(fileArray);
$.ajax({
url: "../Myutil/upLoad_File" ,//傳向後臺伺服器檔案
type: 'post', //傳遞方法
data: formData, //傳遞的資料
dataType : 'json', //傳遞資料的格式
async:false, //這是重要的一步,防止重複提交的
cache: false, //設定為false,上傳檔案不需要快取。
contentType: false,//設定為false,因為是構造的FormData物件,所以這裡設定為false。
processData: false,//設定為false,因為data值是FormData物件,不需要對資料做處理。
success: function (responseStr) {
if(responseStr.msg!=1){
alert(responseStr.info);
}else{
alert(responseStr.info);
}
},
error: function () {
alert("上傳錯誤!");
}
});
//阻止繼續呼叫函式
// return false;
});
});
上面的程式碼是ajax向伺服器傳遞檔案的方法,其中需要特別注意:
1.async:false,
false為同步,這個Ajax請求將整個瀏覽器鎖死,只有upLoad_File方法執行結束後,才可以執行其它操作。
2.async: true,
true是非同步的,這個ajax請求和其後面的操作是非同步執行的,那麼當upLoad_File方法還未執行完,就可能已經執行了 ajax請求後面的操作,如:alert(responseStr.info);然而,info這個資料是在ajax請求success後才賦值的,結果,輸出時會為空。
當然還有另一種方式來達到和同步的同種效果,那就是在函式體末尾加 return false;來防止函式的繼續呼叫。
伺服器接收檔案
我用的是php語言和thinkphp框架,編寫的接收方法如下
public function upLoad_File(){
//檔案儲存路徑
$output_dir = APP_PATH."/../upload/";
//獲取上傳檔名
$fileName=$_FILES['fileArray']['name'];
//獲取上傳檔案
$file=$_FILES['fileArray'];
if (!isset($file)){
$this->ajaxReturn(array(
'msg'=>0,
"info"=>"檔案上傳失敗!",
));
}else{
//上傳檔案
if([email protected]_uploaded_file($file['tmp_name'],$output_dir.$fileName)){
$this->ajaxReturn(array(
'msg'=>0,
"info"=>"檔案上傳失敗!",
));
} ;
$this->ajaxReturn(array(
'msg'=>1,
"info"=>"檔案上傳成功!!",
));
// return $fileName;
}
}
服務端接收檔案需要注意的地方是$_FILES[‘fileArray’],它就是ajax傳過來的formData.append(“fileArray”, fileArray[i])資料。
相關推薦
ajax上傳檔案,php接收
//html <input id="user_real_name" class="input_show" type="text" value="" placeholder="姓名"> <input id="file1" class="ufile" type="file" name
ajax 上傳檔案到php
作為一個開發人員,踩坑是必要的,不踩坑是不長進的。今天我們就來談談ajax上傳檔案時可能遇到的幾個大坑。 html 檔案: </div> <input type="file" id="fileloader" name="fi
php+ajax上傳檔案
直接上原始碼 html頁面 <!DOCTYPE html> <html><head><meta charset="UTF-8" ><meta name="description" content=""/><
Ajax 上傳檔案(input file FormData)
FormData物件用以將資料編譯成鍵值對,以便用XMLHttpRequest來發送資料。其主要用於傳送表單資料,但亦可用於傳送帶鍵資料(keyed data),而獨立於表單使用。 jQuery Ajax 上傳檔案 通過 Ajax 向後臺傳送檔案(包括圖片)時,其引數型別屬於物件。可以建立一個 FormD
Ajax上傳檔案及攜帶引數
HTML程式碼 <div class="form-group"> <label class="col-sm-2 control-label">檔案上傳</label> <div class="col-sm-10"
SpringMVC Ajax上傳檔案例項
做了一個檔案上傳模組,因為傳統的form提交會有頁面重新整理,不符合我的使用要求,所以我採用Ajax提交方式,這裡說明下,我的應用程式前端為Ajax提交,後端SpringMVC接收處理。 傳統form提交檔案方式: <form id="uploadPic" action="/user/
Django 使用ajax上傳檔案
Django 使用ajax上傳檔案 JSON json指的是JavaScript物件表示法(JavaScript Object Notaion) json是輕量級的文字資料交換格式 json獨立於語言 json具有自我描述性,更易理解 JSON 使用 JavaScript 語法來描述資料物件,但是
ajax上傳檔案 基於jquery form表單上傳檔案
<script src="/static/js/jquery.js"></script><script> $("#reg-btn").click(function () { // 1. 取到使用者填寫的資料 var for
Springmvc中ajax上傳檔案出現400錯誤
Springmvc中ajax上傳檔案出現400錯誤 一、配置spring-mvc.xml 需要在spring-mvc.xml中配置檔案上傳解析器 <!-- 定義檔案上傳解析器 --> <bean id="multipartResolver" cl
ajax 上傳檔案,post上傳檔案,ajax 提交 JSON 格式的資料
ajax簡介 前後臺做資料互動 前後端做資料互動的方式(三種): (1)瀏覽器視窗輸入地址(get的方式)(2)form表單提交資料(3)ajax提交資料 特點 特點: (1)非同步 非同步與同步的區別:同步是請求發過去,要等著迴應;非同步不
django 基於form表單上傳檔案和基於ajax上傳檔案
一、基於form表單上傳檔案 1、html裡是有一個input type="file" 和 ‘submit’的標籤 2、vies.py def fileupload(request): if request.method == 'POST': print(request.P
Ajax上傳檔案之上傳圖片
這用到iframe+form形式上傳圖片 簡單的 不利用formData物件 onchange='' 也是用來觸發事件,當狀態一改變就執行寫入的函式 為了確保圖片路徑要唯一:uuid+obj.name onload='' 做回撥函式,對後端傳來的資料處理 前端
ajax 上傳檔案和form
1、檔案html,點選顯示 <div class="col-md-2"> <a href="javascript:void(0);" class="thumbnail">
利用js/jq 利用FormData 物件和ajax上傳檔案
new FormData(); 可以獲取某個表單,但是有時候感覺不太靈活。可以利用jq獲取指定input type=file 中的檔案,將其賦值給FormData 例項的某個屬性,做上傳。 HTML: <div class="test" style="
ajax上傳檔案與excel表格匯入總結
一、excel匯入:(還有別的外掛像EasuPoi ,ExcelUtil等) 1、需要匯入包: Apache POI / 2、依賴: <dependency> <groupId>org.apache.poi</groupId> <
ajax上傳檔案到後端
JSP程式碼:<input type="file" style="display: none" id="file" name="file" onchange="upload(this);">JS程式碼:window.upload = function(el){
AJAX上傳檔案
function checkfile() { //formdata儲存非同步上傳資料 var formData = new FormData($('form')[0]); formData.append('file', $('
上傳頭像自定義裁切, JCROP 選區,AJAX 上傳,PHP GD庫裁切
AJAX 上傳圖片後,使用JCrop 外掛作為前端選區工具,實時預覽效果, 使用者上傳的頭像圖片尺寸過大時,程式會自動縮放到合理範圍,防止頁面被撐破。 沒有使用常見的 flash 方式,可以放心在 蘋果的 Mac Safari 上使用。 最終效果: 程式分析: 前端:
ajax 上傳檔案 報錯 Warning: Cannot modify header information - headers already sent in Unknown on line 0
在使用ajax更新或上傳資料的時候,return回來的卻是一堆錯誤 後來才知道原來是PHP5.6有的功能已經廢棄了,所以我需要開啟PHP.ini檔案,找到 ;always_populate_raw_post_data = -1 將前面的分號去掉 always_popula
spring boot 下 ajax 上傳檔案
jsp: <div class="modelFile fl"> <form method="POST" enctype="multipart/form-data" id="fileUploadForm"> <inpu