今天介紹的這款flash上傳頭像功能非常強大,支持php,asp,jsp,asp.net 調用 頭像剪裁,預覽組件插件。 本組件需要安裝Flash Player后才可使用,請從http://dl.pconline.com.cn/html_2/1/114/id=8122&pn=0.html" target='_blank'>這里下載安裝。
程序員,你不是一個人;網站開發QQ群:35291327 在線充值,或聯系QQ416148489直接充值
該flash頭像上傳插件受眾多開發人員好評的優秀,具有以下優勢:
<ul class="ul_demo"> <li>上傳並預覽,用戶可以任意選擇區域,支持頭像旋轉</li> <li>支持上傳成功,js 回調函數</li> <li>無論圖片過大還是過小,都可以按照固定大小顯示</li> <li>支持亮度,對比度,飽和度修飾</li> <li>支持頭像拍照保存</li> <li>支持php,asp,jsp,asp.net 調用</li> <li>兼容性好,任何瀏覽器 IE10, IE9, IE8, IE7 IE 6 ,firefox, chrome 都正常使用 </li>
HTML
首先我們在頁面上定義了一個隱藏的上傳按鈕。為什么要隱藏呢?這是為了保證圖片成功加載到編輯面板。
<button type="button" id="upload" style="display:none;margin-top:8px;">
swf外定義的上傳按鈕,點擊可執行上傳保存操作
</button>
接着我們要載入jQuery庫和flash需要的組件。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="scripts/swfobject.js"></script>
<script type="text/javascript" src="scripts/fullAvatarEditor.js"></script>
最后我們看下頭像上傳的調用方法,說明都已經寫在以下代碼里。
swfobject.addDomLoadEvent(function() {
//以下兩行代碼正式環境下請刪除
if (location.href.indexOf('http://') == -1) alert('請於WEB服務器環境中查看、測試!\n\n既 http://*/simpleDemo.html\n\n而不是本地路徑 file:///*/simpleDemo.html的方式');
var swf = new fullAvatarEditor("fullAvatarEditor.swf", "expressInstall.swf", "swfContainer", {
id: 'swf',
upload_url: 'upload.php?userid=999&username=looselive',//上傳頭像地址和參數
method: 'post',//傳遞到上傳接口中的查詢參數的提交方式。更改該值時,請注意更改上傳接口中的查詢參數的接收方式
src_upload: 2,//是否上傳原圖片的選項,有以下值:0-不上傳;1-上傳;2-顯示復選框由用戶選擇
avatar_box_border_width: 0,
avatar_sizes: '100*100|50*50|32*32',
avatar_sizes_desc: '100*100像素|50*50像素|32*32像素'
},
function(msg) {
switch (msg.code) {
case 1:
//alert("頁面成功加載了組件!");
break;
case 2:
//alert("已成功加載圖片到編輯面板。");
document.getElementById("upload").style.display = "inline";
break;
case 3:
if (msg.type == 0) {
alert("攝像頭已准備就緒且用戶已允許使用。");
} else if (msg.type == 1) {
alert("攝像頭已准備就緒但用戶未允許使用!");
} else {
alert("攝像頭被占用!");
}
break;
case 5:
if (msg.type == 0) {
if (msg.content.sourceUrl) {
alert("原圖已成功保存至服務器,url為:\n" + msg.content.sourceUrl + "\n\n" + "頭像已成功保存至服務器,url為:\n" + msg.content.avatarUrls.join("\n\n") + "\n\n傳遞的userid=" + msg.content.userid + "&username=" + msg.content.username);
} else {
alert("頭像已成功保存至服務器,url為:\n" + msg.content.avatarUrls.join("\n\n") + "\n\n傳遞的userid=" + msg.content.userid + "&username=" + msg.content.username);
}
}
break;
}
});
document.getElementById("upload").onclick = function() {
swf.call("upload");
};
});
PHP
本文以PHP上傳為例,我們把頭像上傳到upload文件夾,並且上傳后生成了三張頭像縮略圖。
$dir = "upload";
// 取服務器時間+8位隨機碼作為部分文件名,確保文件名無重復。
$filename = date("YmdHis") . '_' . floor(microtime() * 1000) . '_' . createRandomCode(8);
// 處理原始圖片開始------------------------------------------------------------------------>
//默認的 file 域名稱是__source,可在插件配置參數中自定義。參數名:src_field_name
$source_pic = $_FILES["__source"];
//如果在插件中定義可以上傳原始圖片的話,可在此處理,否則可以忽略。
if ($source_pic) {
if ($source_pic['error'] > 0) {
$msg .= $source_pic['error'];
} else {
//原始圖片的文件名,如果是本地或網絡圖片為原始文件名、如果是攝像頭拍照則為 *FromWebcam.jpg
$sourceFileName = $source_pic["name"];
//原始文件的擴展名(不包含“.”)
$sourceExtendName = substr($sourceFileName, strripos($sourceFileName, "."));
//保存路徑
$savePath = "$dir\php_source_$filename." . $sourceExtendName;
//當前頭像基於原圖的初始化參數(只有上傳原圖時才會發送該數據,且發送的方式為POST),用於修改頭像時保證界面的視圖跟保存頭像時一致,提升用戶體驗度。
//修改頭像時設置默認加載的原圖url為當前原圖url+該參數即可,可直接附加到原圖url中儲存,不影響圖片呈現。
$init_params = $_POST["__initParams"];
$result['sourceUrl'] = toVirtualPath($savePath) . $init_params;
move_uploaded_file($source_pic["tmp_name"], $savePath);
$success_num++;
}
}
后台處理縮略圖在這里就不細說了,請下載壓縮文件查看。有興趣的朋友可以再看看<a href='http://www.sucaihuo.com/js/3.html' target='_blank'> PHP+jQuery+Ajax多圖片上傳</a>。