源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

模拟QQ心情图片上传预览示例

  • 时间:2020-09-29 03:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:模拟QQ心情图片上传预览示例
出于安全性能的考虑,目前js端不支持获取本地图片进行预览,正好在做一款类似于QQ心情的发布框,找了不少jquery插件,没几个能满足需求,因此自己使用SWFuplad来实现这个图片上传预览。 先粘上以下插件,在别的图片上传功能说不定各位能用的上。 [b]1、jQuery File Upload[/b] Demo地址:http://blueimp.github.io/jQuery-File-Upload/ 优点是使用jquery进行图片的异步上传,可控性好,可根据自己的需求任意定制; 缺点是在IE9等一些浏览器中,不支持图片预览,图片选择框中不支持多文件选择(这点是我抛弃它的原因); [b]2、CFUpdate[/b] Demo地址:http://www.access2008.cn/update/ 优点:使用js+flash实现,兼容所有浏览器,优点界面效果还可以,支持批量上传、支持预览、进度条、删除等功能,作为图片的上传控件非常好用; 缺点:定制型插件,只能修改颜色,样式已经固定死了; [b]3、SWFUpload[/b] 下载地址:http://code.google.com/p/swfupload/ 中文文档帮助地址:http://www.phptogether.com/swfuploadoc/#uploadError 本文所使用的就是此插件,使用flash+jquery实现,可以更改按钮及各种样式;监听事件也很全。 以下贴出源码及设计思路,主要功能点包括: 1、图片的上传预览(先将图片上传至服务器,然后再返回地址预览,目前抛开html5比较靠谱的预览方式) 2、缩略图的产生(等比例缩放后再截取中间区域作为缩略图,类似QQ空间的做法,不过貌似QQ空间加入了人脸识别的功能) 以下是此次实现的功能截图: [img]http://files.jb51.net/file_images/article/201308/201308141736374.gif?2013714173713[/img]   1、Thumbnail.cs
[url=Style/Mood.css]<title></title> <script type="text/javascript"> $().ready(function () { SetSwf(); $("#btnReply").click(function () { $("#divImgs").hide(); }); }); var swfu; function SetSwf() { swfu = new SWFUpload({ // Backend Settings upload_url: "Upload.ashx", // File Upload Settings file_size_limit: "20 MB", file_types: "*.jpg;*.png;*jpeg;*bmp", file_types_description: "JPG;PNG;JPEG;BMP", file_upload_limit: "0", // Zero means unlimited file_queue_error_handler: fileQueueError, file_dialog_complete_handler: fileDialogComplete, upload_progress_handler: uploadProgress, upload_error_handler: uploadError, upload_success_handler: uploadSuccess, upload_complete_handler: uploadComplete, // Button settings button_image_url: "/Style/Image/4-16.png", button_placeholder_id: "divBtn", button_width: 26, button_height: 26, // Flash Settings flash_url: "/swfupload/swfupload.swf", custom_settings: { upload_target: "divFileProgressContainer" }, // Debug Settings debug: false }); } // 文件校验 function fileQueueError(file, errorCode, message) { try { switch (errorCode) { case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: alert("上传文件有错误!"); break; case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: alert("上传文件超过限制(20M)!"); break; case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: default: alert("文件出现错误!"); break; } } catch (ex) { this.debug(ex); } } // 文件选择完毕时触发 function fileDialogComplete(numFilesSelected, numFilesQueued) { try { if (numFilesQueued > 0) { $("#divImgs").show(); for (var i = 0; i < numFilesQueued; i++) { $("#ulUpload").append('<li id="li' + i + '"><img class="imgload" src="/style/image/loading.gif" alt="" /></li>'); } this.startUpload(); } } catch (ex) { this.debug(ex); } } // 滚动条的处理方法 暂时没写 function uploadProgress(file, bytesLoaded) { } // 每个文件上传成功后的处理 function uploadSuccess(file, serverData) { try { var index = file.id.substr(file.id.lastIndexOf('_') + 1); $("#li" + index).html(""); $("#li" + index).html('<img src="' + serverData + '" alt=""/>'); index++; } catch (ex) { this.debug(ex); } } // 上传完成后,触发下一个文件的上传 function uploadComplete(file) { try { if (this.getStats().files_queued > 0) { this.startUpload(); } } catch (ex) { this.debug(ex); } } // 单个文件上传错误时处理 function uploadError(file, errorCode, message) { var imageName = "imgerror.png"; try { var index = file.id.substr(file.id.lastIndexOf('_') + 1); $("#li" + index).html(""); $("#li" + index).html('<img src="/style/image/imgerror.png" alt=""/>'); index++; } catch (ex3) { this.debug(ex3); } } </script> </head> <body> <form id="form1" runat="server"> <div style="width: 600px;"> <div class="divTxt"> 文本框 </div> <div style="height: 30px; line-height: 30px;"> <div id="divBtn" style="float: left; width: 26px; height: 26px;"> </div> <div style="float: right;"> <input id="btnReply" type="button" value="发表" /> </div> </div> <div id="divImgs" style="border: 1px solid #cdcdcd; display: none;"> <div> 上传图片</div> <ul id="ulUpload" class="ulUpload"> </ul> </div> </div> </form> </body> </html>
使用Vs2010开发,以下为项目源码地址[/url]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部