先了解了解uploadify,具體內容如下
uploadify是一個簡單易用的多檔案上傳方案。作為一個jquery插件,uploadify使用簡單,並具有高度的客製化。
uploadify特性:
uploadify簡單說來,是基於jquery的一款檔案上傳外掛。它的功能特色總結如下:
1)、支援單一檔案或多檔案上傳,可控制並發上傳的檔案數
2)、在伺服器端支援各種語言與之配合使用,諸如php,.net,java……
3)、透過參數可設定上傳檔案類型及大小限制
4)、透過參數可設定是否選擇檔案後自動上傳
5)、易於擴展,可控制每一步的回呼函數(onselect, oncancel…)
6)、透過介面參數和css控制外觀
7)、提供上傳進度的事件回調,即時顯示上傳進度
8)、開始之前要先下載插件安裝包到本地並引用,詳細實作請看程式碼註釋,下面開始程式碼。
1、html代碼
<div id="webapplogo_file" style="display: block; width: 800px; background-color: #fff;"> <ul> <li style="margin-left: 213px;"><span class="black_blod14">logo图标:</span></li> <li style="margin-left: 3px;"> <input type="text" readonly="readonly" id="text_webapplogo" name="app_logo" class="appipt1" value="<%=applogo %>" /></li> <li style="padding-top: 1px;"> <input type="file" id="webapplogo" name="webapplogo" /> </li> <li><span style="display: none; margin-left: 5px; padding-left: 20px; color: #ea5200; font-size: 12px; background: url('images/icon_03.gif' ) no-repeat 0px 0px;" id="textporapplogo"> 请上传logo图标!</span></li> <li style="margin-left: 220px;"><span class="grey999" style="margin-left: 90px; float: left;"> 尺寸72px*72px,png格式,建议使用 图标psd模板 制作</span> <div id="qid_webapplogo" class="filequeue"></div> <table id="webapplogo_tab" width="50%" border="0" cellspacing="0" cellpadding="0" align="center" class="grey999" style="display: none; margin-left: 90px; float: left;"> <tr> <td align="center" valign="bottom"> <img src="/static/imghwm/default1.png" data-src="images/icon_02.gif" class="lazy" style="max-width:90%" id="img_64" border="0" / alt="基於Jquery外掛程式Uploadify實作即時顯示進度條上傳圖片_jquery" ><br /> (64*64) </td> <td align="center" valign="bottom"> <img src="/static/imghwm/default1.png" data-src="images/icon_02.gif" class="lazy" style="max-width:90%" id="img_48" border="0" / alt="基於Jquery外掛程式Uploadify實作即時顯示進度條上傳圖片_jquery" ><br /> (48*48) </td> <td align="center" valign="bottom"> <img src="/static/imghwm/default1.png" data-src="images/icon_02.gif" class="lazy" style="max-width:90%" id="img_32" border="0" / alt="基於Jquery外掛程式Uploadify實作即時顯示進度條上傳圖片_jquery" ><br /> (32*32) </td> <td align="center" valign="bottom"> <img src="/static/imghwm/default1.png" data-src="images/icon_02.gif" class="lazy" style="max-width:90%" id="img_16" border="0" / alt="基於Jquery外掛程式Uploadify實作即時顯示進度條上傳圖片_jquery" ><br /> (16*16) </td> </tr> </table> </li> </ul> </div>
2、javascript程式碼(關鍵部分)
$("#webapplogo").uploadify({ 'uploader': 'js/uploadify-v2.1.4/uploadify.swf',//进度条,uploadify里面含有 'script': 'uploadapplogo.ashx',//一般处理程序 'cancelimg': 'js/uploadify-v2.1.4/cancel.png',//取消图片路径 'folder': 'imagelogo',//上传文件夹名 'auto': true, //文件添加到上传队列后,自动进行上传。默认为false 'multi': false,//是否允许多文件上传。默认为false 'fileext':'*.gif;*.jpg;*.jpeg;*.png',//允许上传的文件类型,使用分号(”;)”分割 例如:*.jpg;*.gif,默认为null(所有文件类型) 'filedesc':'不超过2m的图片 (*.gif;*.jpg;*.png)', 'sizelimit': 2048000, //允许上传的文件大小(kb) 此为2m 'onselectonce': function(event,data) { //在单文件或多文件上传时,选择文件时触发 //event 事件对象(the event object) //data 选择的操作信息 //data.filesselected 选择文件操作中选中的文件数量 $('#status-message').text(data.filesselected + ' 文件正在等待上传…….'); }, 'oncomplete': function(event, queueid, fileobj, response, data) {//当单个文件上传完成后触发 //event:事件对象(the event object) //id:该文件在文件队列中的唯一表示 //fileobj:选中文件的对象,他包含的属性列表 //response:服务器端返回的response文本,我这里返回的是处理过的文件名称 //data:文件队列详细信息和文件上传的一般数据 alert("文件:" + fileobj.name + " 上传成功!"); //设置图片名称 $("#applogo").attr("value",response); //设置输入框的值 $("#text_webapplogo").attr("value",fileobj.name); //设置图片路径 $("#img_64").attr("src","imagelogo/64_"+response); $("#img_48").attr("src","imagelogo/48_"+response); $("#img_32").attr("src","imagelogo/32_"+response); $("#img_16").attr("src","imagelogo/16_"+response); //图片路径设置完成后,显示图片 $("#webapplogo_tab").css("display","block"); }, 'onerror': function(event, queueid, fileobj) {//当单个文件上传出错时触发 alert("文件:" + fileobj.name + " 上传失败!"); }, 'buttonimg':'images/bn_04.gif',//浏览按钮的图片路径 'width':60,//浏览按钮的宽和高 'height':24 ,'queueid':'qid_webapplogo'//页面上作为文件上传队列的元素的id });
3、伺服器端處理檔上傳
/// <summary> /// 上传文件 /// </summary> public class UploadApplogo : IHttpHandler { System.Drawing.Image image, image64, image48, image32, image16; //定义image类的对象 protected string imagePath;//图片路径 protected string imageType;//图片类型 protected string imageName;//图片名称 protected string fileName;//图片名称 //提供一个回调方法,用于确定Image对象在执行生成缩略图操作时何时提前取消执行 //如果此方法确定 GetThumbnailImage 方法应提前停止执行,则返回 true;否则返回 false System.Drawing.Image.GetThumbnailImageAbort callb = null; public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; HttpPostedFile UploadImage = context.Request.Files["FileData"]; //物理路径 string uploadpath = HttpContext.Current.Server.MapPath(context.Request["folder"] + "\\"); if (UploadImage != null) { //是否有目录,如没有就创建 if (!Directory.Exists(uploadpath)) { Directory.CreateDirectory(uploadpath); } //客户端文件完全名称 string filename = UploadImage.FileName; string extname = filename.Substring(filename.LastIndexOf(".") + 1); //为不重复,设置文件名 fileName = Guid.NewGuid().ToString() + "." + extname; //context.Response.Write("1"); context.Response.Write(fileName); } else { context.Response.Write("0"); } string mPath; imagePath = UploadImage.FileName; //取得图片类型 imageType = imagePath.Substring(imagePath.LastIndexOf(".") + 1); //取得图片名称 imageName = imagePath.Substring(imagePath.LastIndexOf("\\") + 1); Stream imgStream = UploadImage.InputStream;//流文件,准备读取上载文件的内容 int imgLen = UploadImage.ContentLength;//上载文件大小 //建立虚拟路径 mPath = HttpContext.Current.Server.MapPath(context.Request["folder"]); //保存到虚拟路径 UploadImage.SaveAs(mPath + "\\" + fileName); ////显示原图 //imageSource.ImageUrl = "upFile/" + imageName; //为上传的图片建立引用 image = System.Drawing.Image.FromFile(mPath + "\\" + fileName); //生成缩略图 image64 = image.GetThumbnailImage(64, 64, callb, new System.IntPtr()); //把缩略图保存到指定的虚拟路径 image64.Save(HttpContext.Current.Server.MapPath(context.Request["folder"]) + "\\64_" + fileName); //释放image64对象的资源 image64.Dispose(); //生成缩略图 image48 = image.GetThumbnailImage(48, 48, callb, new System.IntPtr()); image48.Save(HttpContext.Current.Server.MapPath(context.Request["folder"]) + "\\48_" + fileName); image48.Dispose(); //生成缩略图 image32 = image.GetThumbnailImage(32, 32, callb, new System.IntPtr()); image32.Save(HttpContext.Current.Server.MapPath(context.Request["folder"]) + "\\32_" + fileName); image32.Dispose(); //生成缩略图 image16 = image.GetThumbnailImage(16, 16, callb, new System.IntPtr()); image16.Save(HttpContext.Current.Server.MapPath(context.Request["folder"]) + "\\16_" + fileName); image16.Dispose(); //释放image对象占用的资源 image.Dispose(); } public bool IsReusable { get { return false; } } }
4、效果如下
以上就是本文的全部內容,希望對大家的學習有所幫助。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。