国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

AjaxFileUpload.js實現異步上傳文件功能

來源:懂視網 責編:小采 時間:2020-11-27 21:58:17
文檔

AjaxFileUpload.js實現異步上傳文件功能

AjaxFileUpload.js實現異步上傳文件功能:做軟工作業時,需要實現無刷新異步上傳圖片到服務器,于是想利用Ajax: 得到file的val,再post過去… 等真正實現的時候才發現,根本行不通。 于是翻來翻去找到一個封裝好的js插件,可以實現異步上傳文件。 AjaxFileUpload 這個插件的原理是創建隱藏的表單和
推薦度:
導讀AjaxFileUpload.js實現異步上傳文件功能:做軟工作業時,需要實現無刷新異步上傳圖片到服務器,于是想利用Ajax: 得到file的val,再post過去… 等真正實現的時候才發現,根本行不通。 于是翻來翻去找到一個封裝好的js插件,可以實現異步上傳文件。 AjaxFileUpload 這個插件的原理是創建隱藏的表單和

使用方法

引入jQuery與ajaxFileUpload插件(由api中心強力提供)

<script type="text/javascript" src="https://api.mayuko.cn/js/jquery.min.js"></script>
<script type="text/javascript" src="https://api.mayuko.cn/js/ajaxfileupload.js"></script>

擴展HTML代碼

<td height="52" class="inputContent" ><div align="center">附件1
<input type="file" name="upload_file" id="ss_upload_file1"></td>
<td colspan="3"><input type="button" name="Submit3" value="上 傳" class="button" id="ss_file_upload"></td>

JS代碼

$("#ss_file_upload").click(function(){ 
 $.ajaxFileUpload({
 url:'doajaxfileupload.php',//請求地址
 secureuri:false,//是否需要安全協議
 fileElementId:'ss_upload_file1',//file的ID
 dataType: 'text',//返回值類型,一般為json
 success: function(img_data1)//成功后執行
 {
 $(ss_file1_url).attr("value",img_data1);
 alert("上傳成功");
 },
 error:function(img_data1,status,e){ 
 alert("上傳失敗"); 
 }
 })
})

PHP代碼

后臺就是進行上傳操作啦,因為是課程設計所以我將圖片上傳到了七牛云存儲中。

如何上傳到七牛中?

<?php
//echo var_dump($_FILES);
//echo $_FILES['upload_file']['tmp_name'];
$file_infor = array("status"=>'',"url"=>'');
require_once("qiniu/io.php");
require_once("qiniu/rs.php");
$bucket = "";//你的bucket
$key1 = $_FILES["upload_file"]["name"] ;
$accessKey = '';//AK
$secretKey = '';//SK
Qiniu_SetKeys($accessKey, $secretKey);
$putPolicy = new Qiniu_RS_PutPolicy($bucket);
$upToken = $putPolicy->Token(null);
$putExtra = new Qiniu_PutExtra();
$putExtra->Crc32 = 1;
list($ret, $err) = Qiniu_PutFile($upToken, $key1,$_FILES["upload_file"]["tmp_name"], $putExtra);
$url='bucket域名'.$key1;
if ($_FILES["upload_file"]["error"] > 0){
$file_infor["status"] = 'error';
}
else{
$file_infor["status"] = 'success';
$file_infor["url"] = $url;
}

echo $url;
?>

$_FILES是一個數組:

array (
‘upload_file' =>
array (
‘name' => ‘733626970332872971.jpg',
‘type' => ‘image/jpeg',
‘tmp_name' => ‘C:\\Windows\\Temp\\phpF203.tmp',
‘error' => 0,
‘size' => 210744,
),
)

這樣前臺就可以接收到上傳圖片之后的url值并進行顯示操作了。

一般來說,AjaxFileUpload的返回類型是json格式,可是在測試的時候前臺一直無法解析json數據,所以無解之后就換成text數據了。

錯誤提示

1.Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,h)} has no method ‘handleError'

這是因為高版本的jQuery中取消了handleError方法,在ajaxfileupload.js中加入該方法就可以啦。 ;)

handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
s.error.call( s.context || s, xhr, status, e );
}

// Fire the global callback
if ( s.global ) {
(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
}
}

2.success: function(data)中data為空值

應該是json數據的問題,我的解決方法是設置返回數據的類型是 text,用alert(data +”:” + data.length); 觀察返回的數據是否有效。

3.一直跳轉到error方法中

當執行if(type==”json”) eval(“data = “+data);會拋出異常,導致在處理異常的時候將status = “error” 因此一直執行error方法。

將ajaxfileupload.js中uploadHttpData: function( r, type ) 方法的 eval(“data = “+data+” “)改為 eval(“data = \” “+data+” \” “);

4.SyntaxError: syntax error錯誤

檢查處理提交操作的服務器后臺處理程序是否存在語法錯誤。

5.change第二次失效

綁定change事件,實現選擇圖片后自動上傳,但是觸發一次change事件后,下次就不會再觸發change事件。

原因:由于ajaxFileUpload把原來的file元素替換成新的file元素,所以之前綁定的change事件就失效了。

解決方法:在 $.ajaxFileUpload({option})中的回調函數里 重新綁定change事件。

$("#upload_file").change(function(){ 
 UploadImg();
});
UploadImg = function() {
 $(window).bind('beforeunload',function(){return '正在上傳,確定離開此頁面嗎?';});
 $('#loading').attr('style','display:block;')
 $.ajaxFileUpload({
 url:'upload_ajax.php',
 secureuri:false,
 fileElementId:'upload_file',
 dataType: 'text',
 success: function(data)
 {
 $('#loading').attr('style','display:none;');
 if(data == 0){
 $("body").overhang({
 type: "error",
 message: "上傳失敗,CODE:00020"
 });
 }
 else if(data == 1){
 $("body").overhang({
 type: "success",
 message: "上傳成功!"
 });
 setTimeout(function(){
 window.location.reload(); 
 },1000);

 }

 else{
 $("body").overhang({
 type: "error",
 message: "格式錯誤,僅支持jpg,png,gif"
 });
 }
 $(window).unbind('beforeunload');
 $("#upload_file").change(function () {
 UploadImg();
 });

 },
 error:function(data,status,e){ 
 $("body").overhang({
 type: "error",
 message: "上傳失敗,CODE:00031"
 });
 }
 }) 
}

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

AjaxFileUpload.js實現異步上傳文件功能

AjaxFileUpload.js實現異步上傳文件功能:做軟工作業時,需要實現無刷新異步上傳圖片到服務器,于是想利用Ajax: 得到file的val,再post過去… 等真正實現的時候才發現,根本行不通。 于是翻來翻去找到一個封裝好的js插件,可以實現異步上傳文件。 AjaxFileUpload 這個插件的原理是創建隱藏的表單和
推薦度:
標簽: 圖片 js 上傳圖片
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品一区视频 | 国产一区二区网站 | 久久精品亚洲欧美日韩久久 | 国产高清美女一级a毛片久久 | 日韩精品一区二区三区国语自制 | 欧洲精品一区二区三区 | 国产精品免费播放 | 国产一级毛片在线 | 国产精品一区二区国产 | 亚洲国产一成人久久精品 | 亚洲精品综合久久中文字幕 | 亚洲人一区 | 欧美精品亚洲人成在线观看 | 欧美亚洲一二三区 | 免费精品国产日韩热久久 | 日韩在线一区二区三区 | 欧美极品欧美日韩 | 日本黄 色 成 年 人免费观看 | 国产亚洲欧美一区二区三区 | 国产精品视频观看 | 国产免费观看网站 | 国产精品第一区在线观看 | 热re91久久精品国产91热 | 国产日产欧美精品一区二区三区 | 亚洲欧美日本另类 | 日韩精品一区二区三区国语自制 | 亚洲欧美另类色图 | 久草综合在线 | 欧美一区二区日韩一区二区 | 911亚洲精品国内自产 | 影音先锋亚洲综合小说在线 | 一区在线免费 | 国内精品久久久久久久久 | 国产精品亚洲αv天堂2021 | 91久久国产情侣真实对白 | 五月天丁香网 | 国产精品一区二区久久 | 欧美国产一区二区三区 | 亚洲国产成人久久一区二区三区 | 免费看成人国产一区二区三区 | 国产在线高清不卡免费播放 |