jquery 批量上傳圖片實(shí)現(xiàn)代碼
更新時(shí)間:2010年01月28日 23:10:21 作者:
在網(wǎng)上一直找不到j(luò)query上傳圖片的例子,今天由于工作需要,在網(wǎng)上找了很長(zhǎng)時(shí)間,找到了一個(gè)不太完整的例子,自已又對(duì)其進(jìn)行了修改,現(xiàn)在已經(jīng)可以使用,但只限于IE,火狐下不能使用,因?yàn)榛鸷碌貌坏奖镜厣蟼鞯膱D片路徑,希望能對(duì)新手有所幫助.
前臺(tái): upload.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>upload</title>
<link href="upload.css" rel="Stylesheet" />
</head>
<body>
<form>
<ul>
<li>
<button id="SubUpload" 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>
</li>
</ul>
<ul id="loadimage">
<li>
<div class="imagelabel">
圖片1:</div>
<div class="imagepath">
<input name="" size="45" id="uploadImg1" type="file" /></div>
<div class="loadinfo">
<span id="uploadImgState1"></span>
</div>
</li>
</ul>
</form>
</body>
</html>
<script type="text/javascript" src="http://www.cnblogs.com/JS/jquery-1.3.2-vsdoc.js"></script>
<script type="text/javascript">
var TfileUploadNum = 1; //記錄圖片選擇框個(gè)數(shù)
var Tnum = 1; //ajax上傳圖片時(shí)索引
//增加上傳按鈕
function TAddFileUpload() {
var idnum = TfileUploadNum + 1;
var str = "<li>";
str += "<div class='imagelabel'>圖片" + idnum + ":</div>";
str += "<div class='imagepath'><input name='' size='45' id='uploadImg" + idnum + "' type='file' /></div>";
str += "<div class='loadinfo'><span id='uploadImgState" + idnum + "'></span></div>";
str += "</li>";
$("#loadimage").append(str);
TfileUploadNum += 1;
}
//開始上傳
function TSubmitUploadImageFile() {
document.getElementById("SubUpload").disabled = true;
document.getElementById("CancelUpload").disabled = true;
document.getElementById("AddUpload").disabled = true;
setTimeout("TajaxFileUpload()", 1000); //此為關(guān)鍵代碼
}
//Ajax上傳方法
function TajaxFileUpload() {
if (Tnum < TfileUploadNum + 1) {
//準(zhǔn)備提交處理
$("#uploadImgState" + Tnum).html("<img src='/gif/upfileloader.gif'/>");
//開始提交
$.ajax({
type: "POST",
url: "Handler.ashx",
data: { upfile: $("#uploadImg" + Tnum).val()},
success: function(data, status) {
var stringArray = data.split("|");
//stringArray[0] 成功狀態(tài)(1為成功,0為失敗)
//stringArray[1] 上傳成功的文件名
//stringArray[2] 消息提示
if (stringArray[0] == "1") {
//上傳成功
$("#uploadImgState" + Tnum).html("<img src='/gif/Success.gif' />" + stringArray[1] + "--" + stringArray[2]);
}
else {
//上傳出錯(cuò)
$("#uploadImgState" + Tnum).html("<img src='/gif/Error.gif' />" + stringArray[1] + "--" + stringArray[2]);
}
Tnum++;
setTimeout("TajaxFileUpload()", 1000);
}
});
}
else {
document.getElementById("SubUpload").disabled = false;
document.getElementById("CancelUpload").disabled = false;
document.getElementById("AddUpload").disabled = false;
}
}
</script>
處理程序Handler.ashx
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.IO;
using System.Text;
using System.Net;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//源圖片路徑
string _fileNamePath = "";
try
{
_fileNamePath = context.Request.Form["upfile"];
string _savedFileResult = UpLoadFile(_fileNamePath); //開始上傳
context.Response.Write(_savedFileResult);//返回上傳結(jié)果
}
catch
{
context.Response.Write("0|error|文件路徑錯(cuò)誤");
}
}
/// <summary>
/// 保存圖片
/// </summary>
/// <param name="fileNamePath"></param>
/// <returns></returns>
private string UpLoadFile(string fileNamePath)
{
//圖片格式
string fileNameExt = fileNamePath.Substring(fileNamePath.IndexOf('.')).ToLower();
if (!CheckFileExt(fileNameExt)) return "0|error|圖片格式不正確!";
//保存路徑
string toFilePath = "ProductUpload/";
//物理完整路徑
string toFileFullPath = HttpContext.Current.Server.MapPath(toFilePath);
//檢查是否有該路徑 沒有就創(chuàng)建
if (!Directory.Exists(toFileFullPath))
{
Directory.CreateDirectory(toFileFullPath);
}
//生成將要保存的隨機(jī)文件名
string toFileName = GetFileName();
//將要保存的完整路徑
string saveFile=toFileFullPath +toFileName + fileNameExt;
///創(chuàng)建WebClient實(shí)例
WebClient myWebClient = new WebClient();
//設(shè)定windows網(wǎng)絡(luò)安全認(rèn)證
myWebClient.Credentials = CredentialCache.DefaultCredentials;
//要上傳的文件
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
//使用UploadFile方法可以用下面的格式
myWebClient.UploadFile(saveFile,fileNamePath);
return "1|"+toFileName+fileNameExt+"|保存成功.";
}
/// <summary>
/// 檢測(cè)圖片類型
/// </summary>
/// <param name="_fileExt"></param>
/// <returns>正確返回True</returns>
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;
}
/// <summary>
/// 得到隨機(jī)圖片名
/// </summary>
/// <returns></returns>
public static string GetFileName()
{
Random rd = new Random();
StringBuilder serial = new StringBuilder();
serial.Append(DateTime.Now.ToString("yyMMddHHmmssff"));
serial.Append(rd.Next(0, 9999).ToString());
return serial.ToString();
}
public bool IsReusable
{
get
{
return false;
}
}
}
CSS樣式 upload.css
body{font-size: 12pt;}
ul{list-style: none;}
li{margin: 0px;}
#loadimage{width: 860px;overflow: hidden;}
.imagelabel{ float: left; width: 60px; height: 25px;}
.imagepath{float: left; width: 400px; height: 25px; }
.loadinfo{float: left; width: 400px;height: 25px;}
復(fù)制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>upload</title>
<link href="upload.css" rel="Stylesheet" />
</head>
<body>
<form>
<ul>
<li>
<button id="SubUpload" 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>
</li>
</ul>
<ul id="loadimage">
<li>
<div class="imagelabel">
圖片1:</div>
<div class="imagepath">
<input name="" size="45" id="uploadImg1" type="file" /></div>
<div class="loadinfo">
<span id="uploadImgState1"></span>
</div>
</li>
</ul>
</form>
</body>
</html>
<script type="text/javascript" src="http://www.cnblogs.com/JS/jquery-1.3.2-vsdoc.js"></script>
<script type="text/javascript">
var TfileUploadNum = 1; //記錄圖片選擇框個(gè)數(shù)
var Tnum = 1; //ajax上傳圖片時(shí)索引
//增加上傳按鈕
function TAddFileUpload() {
var idnum = TfileUploadNum + 1;
var str = "<li>";
str += "<div class='imagelabel'>圖片" + idnum + ":</div>";
str += "<div class='imagepath'><input name='' size='45' id='uploadImg" + idnum + "' type='file' /></div>";
str += "<div class='loadinfo'><span id='uploadImgState" + idnum + "'></span></div>";
str += "</li>";
$("#loadimage").append(str);
TfileUploadNum += 1;
}
//開始上傳
function TSubmitUploadImageFile() {
document.getElementById("SubUpload").disabled = true;
document.getElementById("CancelUpload").disabled = true;
document.getElementById("AddUpload").disabled = true;
setTimeout("TajaxFileUpload()", 1000); //此為關(guān)鍵代碼
}
//Ajax上傳方法
function TajaxFileUpload() {
if (Tnum < TfileUploadNum + 1) {
//準(zhǔn)備提交處理
$("#uploadImgState" + Tnum).html("<img src='/gif/upfileloader.gif'/>");
//開始提交
$.ajax({
type: "POST",
url: "Handler.ashx",
data: { upfile: $("#uploadImg" + Tnum).val()},
success: function(data, status) {
var stringArray = data.split("|");
//stringArray[0] 成功狀態(tài)(1為成功,0為失敗)
//stringArray[1] 上傳成功的文件名
//stringArray[2] 消息提示
if (stringArray[0] == "1") {
//上傳成功
$("#uploadImgState" + Tnum).html("<img src='/gif/Success.gif' />" + stringArray[1] + "--" + stringArray[2]);
}
else {
//上傳出錯(cuò)
$("#uploadImgState" + Tnum).html("<img src='/gif/Error.gif' />" + stringArray[1] + "--" + stringArray[2]);
}
Tnum++;
setTimeout("TajaxFileUpload()", 1000);
}
});
}
else {
document.getElementById("SubUpload").disabled = false;
document.getElementById("CancelUpload").disabled = false;
document.getElementById("AddUpload").disabled = false;
}
}
</script>
處理程序Handler.ashx
復(fù)制代碼 代碼如下:
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.IO;
using System.Text;
using System.Net;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//源圖片路徑
string _fileNamePath = "";
try
{
_fileNamePath = context.Request.Form["upfile"];
string _savedFileResult = UpLoadFile(_fileNamePath); //開始上傳
context.Response.Write(_savedFileResult);//返回上傳結(jié)果
}
catch
{
context.Response.Write("0|error|文件路徑錯(cuò)誤");
}
}
/// <summary>
/// 保存圖片
/// </summary>
/// <param name="fileNamePath"></param>
/// <returns></returns>
private string UpLoadFile(string fileNamePath)
{
//圖片格式
string fileNameExt = fileNamePath.Substring(fileNamePath.IndexOf('.')).ToLower();
if (!CheckFileExt(fileNameExt)) return "0|error|圖片格式不正確!";
//保存路徑
string toFilePath = "ProductUpload/";
//物理完整路徑
string toFileFullPath = HttpContext.Current.Server.MapPath(toFilePath);
//檢查是否有該路徑 沒有就創(chuàng)建
if (!Directory.Exists(toFileFullPath))
{
Directory.CreateDirectory(toFileFullPath);
}
//生成將要保存的隨機(jī)文件名
string toFileName = GetFileName();
//將要保存的完整路徑
string saveFile=toFileFullPath +toFileName + fileNameExt;
///創(chuàng)建WebClient實(shí)例
WebClient myWebClient = new WebClient();
//設(shè)定windows網(wǎng)絡(luò)安全認(rèn)證
myWebClient.Credentials = CredentialCache.DefaultCredentials;
//要上傳的文件
FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs);
//使用UploadFile方法可以用下面的格式
myWebClient.UploadFile(saveFile,fileNamePath);
return "1|"+toFileName+fileNameExt+"|保存成功.";
}
/// <summary>
/// 檢測(cè)圖片類型
/// </summary>
/// <param name="_fileExt"></param>
/// <returns>正確返回True</returns>
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;
}
/// <summary>
/// 得到隨機(jī)圖片名
/// </summary>
/// <returns></returns>
public static string GetFileName()
{
Random rd = new Random();
StringBuilder serial = new StringBuilder();
serial.Append(DateTime.Now.ToString("yyMMddHHmmssff"));
serial.Append(rd.Next(0, 9999).ToString());
return serial.ToString();
}
public bool IsReusable
{
get
{
return false;
}
}
}
CSS樣式 upload.css
復(fù)制代碼 代碼如下:
body{font-size: 12pt;}
ul{list-style: none;}
li{margin: 0px;}
#loadimage{width: 860px;overflow: hidden;}
.imagelabel{ float: left; width: 60px; height: 25px;}
.imagepath{float: left; width: 400px; height: 25px; }
.loadinfo{float: left; width: 400px;height: 25px;}
您可能感興趣的文章:
- Jquery ajaxsubmit上傳圖片實(shí)現(xiàn)代碼
- 基于jquery實(shí)現(xiàn)的上傳圖片及圖片大小驗(yàn)證、圖片預(yù)覽效果代碼
- jquery的ajaxSubmit()異步上傳圖片并保存表單數(shù)據(jù)演示代碼
- 使用jQuery實(shí)現(xiàn)驗(yàn)證上傳圖片的格式與大小
- 簡(jiǎn)單實(shí)現(xiàn)jQuery上傳圖片顯示預(yù)覽功能
- jQuery AjaxUpload 上傳圖片代碼
- JQuery+ajax實(shí)現(xiàn)批量上傳圖片(自寫)
- jQuery實(shí)現(xiàn)上傳圖片前預(yù)覽效果功能
- 基于Jquery插件Uploadify實(shí)現(xiàn)實(shí)時(shí)顯示進(jìn)度條上傳圖片
- jquery實(shí)現(xiàn)上傳圖片功能
相關(guān)文章
以WordPress為例講解jQuery美化頁面Title的方法
鼠標(biāo)移動(dòng)到超鏈接時(shí)顯示Title提示即是所謂Title美化的一般手段,這里我們就以WordPress為例講解jQuery美化頁面Title的方法,需要的朋友可以參考下2016-05-05jquery鼠標(biāo)懸停導(dǎo)航下劃線滑出效果
這篇文章主要為大家詳細(xì)介紹了jquery鼠標(biāo)懸停導(dǎo)航下劃線滑出效果,菜單鼠標(biāo)懸停出現(xiàn)下劃線,向兩邊擴(kuò)展的效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Jquery左右滑動(dòng)插件之實(shí)現(xiàn)超級(jí)炫酷動(dòng)畫效果附源碼下載
這是一款基于jquery.pogo-slider插件實(shí)現(xiàn)的多個(gè)滑塊切換特效。本篇文章給大家介紹Jquery左右滑動(dòng)插件之實(shí)現(xiàn)超級(jí)炫酷動(dòng)畫效果,對(duì)jquery左右滑動(dòng)插件相關(guān)知識(shí)感興趣的朋友參考下2015-12-12jQuery實(shí)現(xiàn)點(diǎn)擊文本框彈出熱門標(biāo)簽的提示效果
點(diǎn)擊文本框彈出熱門標(biāo)簽的效果實(shí)現(xiàn)方法有很多,在本文為大家詳細(xì)介紹下使用jQuery是如何實(shí)現(xiàn)的,感興趣的朋友不要錯(cuò)過2013-11-11autoPlay 基于jquery的圖片自動(dòng)播放效果
效果類似這種,自動(dòng)播放,實(shí)質(zhì)控制層的顯示隱藏。需要的朋友可以參考下。2011-12-12JQuery 設(shè)置checkbox值二次無效的解決方法
下面小編就為大家?guī)硪黄狫Query 設(shè)置checkbox值二次無效的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07使用jQuery簡(jiǎn)化Ajax開發(fā) Ajax開發(fā)入門
jQuery是一個(gè)可以簡(jiǎn)化 JavaScript™以及AJAX(Asynchronous JavaScript + XML,異步Javascript和XML)編程的Javascript庫。不同于其他的Javascript庫,jQuery有他自己的哲學(xué),使你可以 很簡(jiǎn)單的編寫代碼。2009-10-1015款優(yōu)秀的jQuery導(dǎo)航菜單插件分享
這篇文章收集了15款優(yōu)秀的jQuery導(dǎo)航菜單插件分享給大家。jQuery 是一個(gè)非常優(yōu)秀的 JavaScript 框架,使用簡(jiǎn)單靈活,同時(shí)還有許多成熟的插件可供選擇,jQuery 讓網(wǎng)站有更好的可用性和用戶體驗(yàn),給訪問者對(duì)網(wǎng)站留下非常好的印象。2011-07-07