flash中有版權聲明,不適合商業開發。這是官網地址:http://www.hdfu.net/
本文參考了http://blog.csdn.net/yafei450225664/article/details/12855915 并且加入了自己的解析,以供之后的參考。
官網提供的demo包,包含了php,jsp,asp,aspx的demo。
1、Demo中,avatar.swf是執行上傳的flash文件;default.jpg是默認顯示的圖片;demo.html是demo,可以直接復制里面的代碼;index.html 是下載地址,對程序不起作用。upfile.aspx是執行上傳的后臺文件,其實我們可以用一般處理程序代替,沒必要寫aspx,xml的實際作用不了解無需修改。
2.demo.html中,有兩個層,altContent存放flash,里面的東西最好不要修改,我們只需修改里面引用flash的路徑及默認圖片,avatar_PRiview用于顯示上傳成功后的圖片,可以刪除。JS中uploadevent上傳成功后執行,status表示響應報文值,返回1則表示成功,執行

<script type="text/javascript"> function uploadevent(status, picUrl, callbackdata) { //alert(picUrl); //后端存儲圖片 // alert(callbackdata); status += ''; switch (status) { case '1': var time = new Date().getTime(); var filename162 = picUrl + '_162.jpg'; var filename48 = picUrl + '_48.jpg'; var filename20 = picUrl + "_20.jpg"; document.getElementById('avatar_priview').innerHTML = "頭像1 : <img src='" + filename162 + "?" + time + "'/> <br/> 頭像2: <img src='" + filename48 + "?" + time + "'/><br/> 頭像3: <img src='" + filename20 + "?" + time + "'/>"; break; case '-1': window.location.reload(); break; default: window.location.reload(); } } </script>View Code
這段代碼只是用于顯示上傳成功后的圖片,可以根據個人需要進行修改。
3.html中的代碼如下

<div id="altContent"> <object id="myMovieName" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" height="450" width="650"> <param name="movie" value="avatar.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#FFFFFF" /> <param name="flashvars" value="imgUrl=./default.jpg&uploadUrl=./upfile.aspx&uploadSrc=false" /> <embed align="" allowscriptaccess="always" bgcolor="#FFFFFF" flashvars="imgUrl=./default.jpg&uploadUrl=./upfile.aspx&uploadSrc=false" height="450" name="myMovieName" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="./avatar.swf" type="application/x-shockwave-flash" width="650" wmode="transparent"></embed></EMBED></object></div><div id="avatar_priview"></div>View Code
<embed></embed>標簽之間的代碼是負責鏈接到avatar.swf和upfile.aspx后臺代碼和默認照片,根據個人需要可以進行修改。
4.后臺代碼
<%@Import NameSpace="System.IO"%><%@Import NameSpace="System"%><% @ Page Language="C#" %><%
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970,1,1));DateTime dtNow = DateTime.Parse(DateTime.Now.ToString());TimeSpan toNow = dtNow.Subtract(dtStart);string timeStamp = toNow.Ticks.ToString();timeStamp = timeStamp.Substring(0,timeStamp.Length - 7);
String savePath = "./";String savePicName = timeStamp;
String file_src = savePath + savePicName + "_src.jpg";String filename162 = savePath + savePicName + "_162.jpg"; String filename48 = savePath + savePicName + "_48.jpg"; String filename20 = savePath + savePicName + "_20.jpg";
//獲取原圖和修改大小后的三張圖片:String pic = Request.Form["pic"];String pic1 = Request.Form["pic1"];String pic2 = Request.Form["pic2"];String pic3 = Request.Form["pic3"];
/*并通過File保存,當然,我們如果只需要一張圖片,可以刪除多余代碼,也可以修改保存圖片的地址。有了圖片的地址,我們可以直接在這里將圖片地址保存到數據庫中。
這里要注意的是,返回響應報文
Response.Write("{/"status/":1}");是不能修改的,如果改為其他值,比如圖片路徑,那么后臺執行上傳是可以成功的,但前臺無法響應上傳成功,不能彈出上傳成功的框。如果我們需要把后臺處理后的路徑返回前臺,可以用session或靜態變量在后臺保存值。*/
//原圖if (pic.Length == 0) {}else {byte[] bytes = Convert.FromBase64String(pic); //將2進制編碼轉換為8位無符號整數數組FileStream fs =new FileStream(Server.MapPath(file_src),System.IO.FileMode.Create);fs.Write(bytes, 0, bytes.Length);fs.Close();}
byte[] bytes1 = Convert.FromBase64String(pic1); //將2進制編碼轉換為8位無符號整數數組.byte[] bytes2 = Convert.FromBase64String(pic2); //將2進制編碼轉換為8位無符號整數數組.byte[] bytes3 = Convert.FromBase64String(pic3); //將2進制編碼轉換為8位無符號整數數組.
//圖1FileStream fs1 =new FileStream(Server.MapPath(filename162),System.IO.FileMode.Create);fs1.Write(bytes1, 0, bytes1.Length);fs1.Close();
//圖2FileStream fs2 =new FileStream(Server.MapPath(filename48),System.IO.FileMode.Create);fs2.Write(bytes2, 0, bytes2.Length);fs2.Close();
//圖3FileStream fs3 =new FileStream(Server.MapPath(filename20),System.IO.FileMode.Create);fs3.Write(bytes3, 0, bytes3.Length);fs3.Close();
String picUrl = savePath + savePicName;
Response.Write("{/"status/":1,");Response.Write("/"picUrl/":/""+picUrl+"/"}");
%>
接下來推出頭像截圖上傳三種方式之二(SWFUpload)(asp.net版本)和三(jquery插件)
SWFUpload是一個客戶端文件上傳工具,最初由Vinterwebb.se開發,它通過整合Flash與Javascript技術為WEB開發者提供了一個具有豐富功能繼而超越傳統<input type="file" />標簽的文件上傳模式。另一個Flash插件用起來比較簡單,支持截圖、本地攝像頭拍照上傳,關于SWFUpload的介紹,可以查看百度百科,博客園中也有SWFUpload2.5的中文翻譯文檔。http://www.survivalescaperooms.com/youring2/archive/2012/07/13/2590010.htmlSWFUpload .Net安裝包和官方Demo:http://download.csdn.net/detail/QQ14039056961/5246596關于這兩個插件的介紹,都可以通過以上網址了解。
新聞熱點
疑難解答