亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

JQuery+ajax實現批量上傳圖片(自寫)

2024-09-01 08:26:39
字體:
來源:轉載
供稿:網友

在網上搜索了一下,發現以jquery+ajax方式實現單張圖片上傳的代碼是有的,但實現批量上傳圖片的程序卻沒搜索到,于是根據搜索到的代碼,寫了一個可以批量上傳的。
先看效果圖

JQuery+ajax實現批量上傳圖片

點擊增加按鈕,會增加一個選擇框,如下圖:

JQuery+ajax實現批量上傳圖片


選擇要上傳的圖片,效果圖如下:

JQuery+ajax實現批量上傳圖片


上傳成功如下圖:

JQuery+ajax實現批量上傳圖片

JQuery+ajax實現批量上傳圖片

下面來看代碼:
前臺html主要代碼:

復制代碼 代碼如下:www.mb5u.com

<button id="SubUpload" class="ManagerButton" onClick="TSubmitUploadImageFile();return false;">確定上傳</button>
<button id="CancelUpload" class="ManagerButton" onClick="javascript:history.go(-1);">取消</button>
<button id="AddUpload" class="ManagerButton" onClick="TAddFileUpload();return false;">增加</button>
<tr><td class="tdClass">
圖片1:
</td><td class="tdClass">
<input name="" size="60" id="uploadImg1" type="file" />
<span id="uploadImgState1"></span>
</td></tr>

因為用了JQuery,所以你完全可以把click事件放在js文件中
“增加”按鈕js代碼:
復制代碼 代碼如下:www.mb5u.com

var TfileUploadNum=1; //記錄圖片選擇框個數
var Tnum=1; //ajax上傳圖片時索引
function TAddFileUpload()
{
var idnum = TfileUploadNum+1;
var str="<tr><td class='tdClass'>圖片"+idnum+":</td>";
str += "<td class='tdClass'><input name='' size='60' id='uploadImg"+idnum+"' type='file' /><span id='uploadImgState"+idnum+"'>";
str += "</span></td></tr>";
("#imgTable").append(str);
TfileUploadNum += 1;
}


“確定上傳”按鈕js代碼:
復制代碼 代碼如下:www.mb5u.com

function TSubmitUploadImageFile()
{
M("SubUpload").disabled=true;
M("CancelUpload").disabled=true;
M("AddUpload").disabled=true;
setTimeout("TajaxFileUpload()",1000);//此為關鍵代碼
}

關于setTimeout("TajaxFileUpload()",1000);這句代碼:因為所謂的批量上傳,其實還是一個一個的上傳,給用戶的只是一個假象。只所以要延時執行TajaxFileUpload(),是因為在把圖片上傳到服務器上時,我在后臺給圖片重新命名了,命名的規則是,如下代碼:
復制代碼 代碼如下:www.mb5u.com

Random rd = new Random();
StringBuilder serial = new StringBuilder();
serial.Append(DateTime.Now.ToString("yyyyMMddHHmmssff"));
serial.Append(rd.Next(0, 999999).ToString());
return serial.ToString();

即使我命名精確到毫秒,另外再加上隨機數,可是還是有上傳的第二張圖片把上傳的第一張圖片覆蓋的情況出現。所以此處我設置了延時1秒后在上傳下一張圖片。剛開始做這個東西的時候,用的是for循環,來把所有的圖片一個一個的循環地用ajax上傳,可是for循環速度太快了,可能第一張圖片還沒來得及ajax,第二張就被for過來了,還是有第二張覆蓋第一張的情況出現。
下面來看TajaxFileUpload()函數,代碼如下:
復制代碼 代碼如下:www.mb5u.com

function TajaxFileUpload()
{
if(Tnum<TfileUploadNum+1)
{
//準備提交處理
("#uploadImgState"+Tnum).html("<img src=../images/loading.gif />");
//開始提交
.ajax
({
type: "POST",
url:"http://localhost/ajaxText2/Handler1.ashx",
data:{upfile:("#uploadImg"+Tnum).val(),category:("#pcategory").val()},
success:function (data, status)
{
//alert(data);
var stringArray = data.split("|");

if(stringArray[0]=="1")
{
//stringArray[0] 成功狀態(1為成功,0為失敗)
//stringArray[1] 上傳成功的文件名
//stringArray[2] 消息提示
("#uploadImgState"+Tnum).html("<img src=../images/note_ok.gif />");//+stringArray[1]+"|"+stringArray[2]);
}
else
{
//上傳出錯
("#uploadImgState"+Tnum).html("<img src=../images/note_error.gif />"+stringArray[2]);//+stringArray[2]+"");
}
Tnum++;
setTimeout("TSubmitUploadImageFile()",0);
}
});
}
}

上面的代碼沒什么可說的,很容易看懂。下面來看Handler1.ashx(一般處理程序)如何來處理post過來的圖片的(此代碼來自網上,具體地址忘記了),下面只給出關鍵代碼,全部代碼在附件里。
1、
復制代碼 代碼如下:www.mb5u.com

string _fileNamePath = "";
try
{
_fileNamePath = context.Request.Form["upfile"];
//開始上傳
string _savedFileResult = UpLoadFile(_fileNamePath);
context.Response.Write(_savedFileResult);
}
catch
{
context.Response.Write("0|error|上傳提交出錯");
}

2、
復制代碼 代碼如下:www.mb5u.com

//生成將要保存的隨機文件名
string fileName = GetFileName() + fileNameExt;
//物理完整路徑
string toFileFullPath = HttpContext.Current.Server.MapPath(toFilePath);
//檢查是否有該路徑 沒有就創建
if (!Directory.Exists(toFileFullPath))
{
Directory.CreateDirectory(toFileFullPath);
}
///創建WebClient實例
WebClient myWebClient = new WebClient();
//設定windows網絡安全認證 方法1
myWebClient.Credentials = CredentialCache.DefaultCredentials;
//要上傳的文件
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
//FileStream fs = OpenFile();
BinaryReader r = new BinaryReader(fs);
//使用UploadFile方法可以用下面的格式
//myWebClient.UploadFile(toFile, "PUT",fileNamePath);
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(toFile, "PUT");
if (postStream.CanWrite)
{
postStream.Write(postArray, 0, postArray.Length);
}


3、檢查是否合法的上傳文件
復制代碼 代碼如下:www.mb5u.com

private bool CheckFileExt(string _fileExt)
{
string[] allowExt = new string[] { ".gif", ".jpg", ".jpeg" };
for (int i = 0; i < allowExt.Length; i++)
{
if (allowExt[i] == _fileExt) { return true; }
}
return false;
}


4、生成要保存的隨即文件名
復制代碼 代碼如下:www.mb5u.com

public static string GetFileName()
{
Random rd = new Random();
StringBuilder serial = new StringBuilder();
serial.Append(DateTime.Now.ToString("yyyyMMddHHmmssff"));
serial.Append(rd.Next(0, 999999).ToString());
return serial.ToString();
}

Ok,基本上這個批量上傳圖片的JQuery+ajax方式實現的程序完成了。如果你要上傳word文檔,pdf文件,只要稍作修改,就可以實現了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线字幕| 日本最新高清不卡中文字幕| 欧美中文字幕精品| 欧美在线性视频| 国产欧美va欧美va香蕉在线| 欧美成人精品不卡视频在线观看| 日韩电影在线观看中文字幕| 精品免费在线观看| 日韩不卡在线观看| 九九久久国产精品| 日韩成人在线视频观看| 国产偷亚洲偷欧美偷精品| 日韩av电影国产| 国产成人avxxxxx在线看| 国产精品夜色7777狼人| 欧美另类高清videos| 国产亚洲激情视频在线| 欧美激情a在线| 久久这里只有精品99| 国产精品日韩久久久久| 狠狠久久五月精品中文字幕| 色爱精品视频一区| 欧美做受高潮1| 欧美亚洲在线视频| 中文字幕免费国产精品| 亚洲精品视频在线播放| 国产精品福利在线观看| 成人激情电影一区二区| 亚洲成人在线网| 亚洲摸下面视频| 一本色道久久综合狠狠躁篇怎么玩| 日韩精品视频在线| 亚洲福利在线视频| 中文字幕av一区| 国产精品91久久久久久| 亚洲精品视频播放| 性欧美xxxx| 亚洲国产97在线精品一区| 91免费在线视频网站| 欧美猛男性生活免费| 亚洲第一页中文字幕| 中文字幕欧美日韩va免费视频| 综合av色偷偷网| 欧美在线视频一区| 国产性猛交xxxx免费看久久| 久久精品欧美视频| 亚洲一级一级97网| 久久精品电影网站| 欧美激情视频播放| 欧美肥婆姓交大片| 国产亚洲精品美女| 日韩欧美中文字幕在线播放| 亚洲国产精品大全| 欧美人与物videos| 97视频免费观看| 国产精品久久久久91| 亚洲午夜国产成人av电影男同| 中文字幕日韩综合av| 欧美中文在线免费| 亚洲三级黄色在线观看| 国产精品福利在线观看| 米奇精品一区二区三区在线观看| 一区二区在线免费视频| 日韩精品一区二区视频| 97超级碰在线看视频免费在线看| 日韩精品免费在线视频观看| 中文字幕最新精品| 国产性猛交xxxx免费看久久| 欧美人与性动交a欧美精品| 7777kkkk成人观看| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲日本中文字幕免费在线不卡| 91产国在线观看动作片喷水| 久久久999国产| 欧美成人亚洲成人日韩成人| 一本色道久久88综合亚洲精品ⅰ| 久久香蕉国产线看观看av| 亚洲欧美日本另类| 亚洲综合精品一区二区| 欧美一性一乱一交一视频| 日韩在线视频网站| 日韩av片免费在线观看| 国产精品九九九| 久久精品国产亚洲精品2020| 日韩精品一区二区视频| 性色av一区二区三区红粉影视| 日本一区二三区好的精华液| 日韩精品中文在线观看| 成人在线一区二区| 国产成人精品午夜| 久久69精品久久久久久久电影好| 久久视频在线视频| 欧美精品激情在线| 国产精品专区一| 在线看欧美日韩| 秋霞午夜一区二区| 国产精品久久久久久网站| 欧美极度另类性三渗透| 亚洲第一天堂无码专区| 亚洲国产欧美一区二区丝袜黑人| 亚洲精品小视频| 成人福利免费观看| 91精品国产色综合久久不卡98口| 中文字幕精品一区二区精品| 中文字幕亚洲无线码在线一区| 国产在线拍偷自揄拍精品| 久久欧美在线电影| 久久久久久国产精品美女| 亚洲福利在线视频| 中文字幕亚洲综合久久| 亚洲视频视频在线| 91久久在线视频| 日韩精品欧美国产精品忘忧草| 亚洲国产成人爱av在线播放| 久久免费成人精品视频| 亚洲淫片在线视频| 国产91免费观看| 久久亚洲国产成人| 少妇激情综合网| 精品久久香蕉国产线看观看亚洲| 日韩动漫免费观看电视剧高清| 国产精品专区h在线观看| 日韩欧美在线播放| 亚洲一区二区三区成人在线视频精品| 日韩电影免费在线观看中文字幕| 91在线观看免费网站| 国产亚洲欧美一区| 国产精品视频一区国模私拍| 欧美国产视频日韩| 国产做受69高潮| 国产91色在线免费| 亚洲自拍偷拍福利| 国产精品96久久久久久又黄又硬| 性欧美在线看片a免费观看| 亚洲性生活视频在线观看| 国产福利精品av综合导导航| 欧美不卡视频一区发布| 国产欧美日韩亚洲精品| 欧美成人免费全部| 97精品国产97久久久久久免费| 性欧美xxxx视频在线观看| 亚洲九九九在线观看| 北条麻妃99精品青青久久| 九九热精品视频国产| 国产精品吹潮在线观看| 欧美性生活大片免费观看网址| 97热在线精品视频在线观看| 欧美久久精品午夜青青大伊人| 精品国产欧美一区二区三区成人| 欧美极品在线视频| 精品久久久久久久久中文字幕| y97精品国产97久久久久久| 91丝袜美腿美女视频网站| 国内精品久久影院| 亚洲精品欧美日韩专区| 成人在线视频网站| 国产91对白在线播放| 亚洲欧美成人精品| 啪一啪鲁一鲁2019在线视频| 中文字幕av一区二区三区谷原希美| 成人亚洲激情网| 欧美国产精品日韩| 国产精品∨欧美精品v日韩精品| 26uuu国产精品视频|