1. 程式人生 > >jfinal中使用百度編輯器上傳圖片的實現

jfinal中使用百度編輯器上傳圖片的實現

1、首先需要把flash工具放入到專案中,

2、然後在頁面中寫上:

<input id="curCount" name="curCount" type="hidden" value="0" />

加上匯入圖片的外掛:

<object id="flash" codeBase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" 
         classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="900" align="middle" height="387">
             <param name="_cx" value="16086"/>
             <param name="_cy" value="7196"/>
             <param name="flashvars" value="container=flashContainer&amp;url=${ctx }/aaa/albums/picsave?id=${id }提交路徑

&amp;
            ext=%7B%22param1%22%3A%22value1%22%2C%20%22param2%22%3A%22value2%22%7D&amp;
            fileType=%7B%22description%22%3A%22%E5%9B%BE%E7%89%87%22%2C%20%22extension%22%3A%22*.gif%3B*.jpeg%3B*.png%3B*.jpg%22%7D&amp;
            flashUrl=${ctx }/flash/imageUploader.swfflash路徑&amp;width=900&amp;height=387&amp;gridWidth=121&amp;
            gridHeight=120&amp;picWidth=100&amp;picHeight=100&amp;picDescFieldName=picname檔案name
&amp;uploadDataFieldName=picfile上傳的檔案&amp;
            maxSize=4&amp;compressSize=2&amp;
            maxNum=32&amp;
            compressSide=0&amp;compressLength=900"/>
             <param name="movie" value='${ctx }/flash/imageUploader.swf'/>
             <param name="src" value='${ctx }/flash/imageUploader.swf'/>
             <param name="wmode" value="window"/>
             <param name="play" value="0"/>
             <param name="loop" value="-1"/>
             <param name="quality" value="high"/>
             <param name="salign" value="lt"/>
             <param name="menu" value="-1"/>
             <param name="base" value=""/>
             <param name="allowscriptaccess" value=""/>
             <param name="scale" value="noscale"/>
             <param name="devicefont" value="0"/>
             <param name="embedmovie" value="0"/>
             <param name="bgcolor" value=""/>
             <param name="swremote" value=""/>
             <param name="moviedata" value=""/>
             <param name="seamlesstabbing" value="1"/>
             <param name="profile" value="0"/>
             <param name="profileaddress" value=""/>
             <param name="profileport" value="0"/>
             <param name="allownetworking" value="all"/>
             <param name="allowfullscreen" value="false"/>
             <param name="allowfullscreeninteractive" value=""/>
             <param name="isdependent" value="0"/>
             <param name="wmode" value="transparent"/>
             <param name="movie"  value='${ctx }/flash/imageUploader.swf'/>            
             <embed height="387" name="flash" type="application/x-shockwave-flash" align="middle" 
             pluginspage="http://www.macromedia.com/go/getflashplayer" width="900" src="${ctx }/flash/imageUploader.swf

             flashvars="container=flashContainer&amp;url=${ctx }/aaa/albums/picsave?id=${id }&amp;
             ext=%7B%22param1%22%3A%22value1%22%2C%20%22param2%22%3A%22value2%22%7D&amp;uploadDataFieldName=picfile&amp;
             fileType=%7B%22description%22%3A%22%E5%9B%BE%E7%89%87%22%2C%20%22extension%22%3A%22*.gif%3B*.jpeg%3B*.png%3B*.jpg%22%7D&amp;
             flashUrl=${ctx }/flash/imageUploader.swf&amp;width=900&amp;height=387&amp;gridWidth=121&amp;gridHeight=120&amp;
              ext=classpic.classpicId&amp;picWidth=100&amp;picHeight=100&amp;picDescFieldName=picname&amp;maxSize=4&amp;compressSize=2&amp;maxNum=32&amp;
             compressSide=0&amp;compressLength=900" ver="10.0.0" wmode="transparent" errorMessage="Flash外掛初始化失敗,請更新您的FlashPlayer版本之後重試!">
       </embed>
        </object>

<div style="height:80px;padding-right:40px;">
 <a id="upload">&nbsp;</a>
        <script type="text/javascript">
        $('#upload').click(function() {
           return upload();
        });
</script>
</div> 

3、加上提交按鈕

css樣式:

#upload {
width: 100px;
height: 30px;
float: right;
background: url("../images/upload.png");
margin: 3px 6px 0 0;
cursor: pointer;
}

4、加上Default.js檔案

/***********************Flash事件*****************************/
/**
* 檢查flash狀態
* @private
* @param {Object} target flash物件
* @return {Boolean}
*/
function _checkReady(target) {
    if (typeof target !== 'undefined' && typeof target.flashInit !== 'undefined' && target.flashInit()) {
        return true;
    } else {
        return false;
    }
}
/**
* 建立一個隨機的字串
* @private
* @return {String}
*/
function _createString() {
    var prefix = 'mw__flash__';
    return prefix + Math.floor(Math.random() * 2147483648).toString(36);
}


/**
* 為傳入的匿名函式建立函式名
* @private
* @param {String|Function} fun 傳入的匿名函式或者函式名
* @return {String}
*/
function _createFunName(fun) {
    var name = '';
    name = _createString();
    window[name] = function () {
        fun.apply(window, arguments);
    };
    return name;
}
/***
反覆判斷Flash是歐載入完成,完成後為Flash添加回調函式..
*/
var interval = setInterval(function () {
    try {
        var flash = thisMovie("flash");
        if (_checkReady(flash)) {               //輪詢flash的某個方法即可


            var callBack = [];
            callBack[0] = _createFunName(selectFileCallback);
            callBack[1] = _createFunName(exceedFileCallback);
            callBack[2] = _createFunName(deleteFileCallback);
            callBack[3] = _createFunName(StartUploadCallback);
            callBack[4] = _createFunName(uploadCompleteCallback);
            callBack[5] = _createFunName(uploadErrorCallback);
            callBack[6] = _createFunName(allCompleteCallback);
            callBack[7] = _createFunName(changeHeightCallback);
            thisMovie("flash").call('setJSFuncName', [callBack]);


            clearInterval(interval);
        }
    }
    catch (ex) {
    }
}, 20);


//獲得Flash物件
function thisMovie(movieName) {
    if (navigator.appName.indexOf("Misrosoft") != -1) {
        return window[movieName];
    }
    else {
        return document[movieName];
    }
}
//事件
$(function ($) {
    $("a").on("click","#upload" ,function () { return upload(); });
});


function Setbtn(count) {
    $("#curCount").val(count);
}
// 通過新增檔案按鈕新增的需要上傳檔案
function selectFileCallback(selectFiles) {
    var count = $("#curCount").val();
    count = parseInt(count) + selectFiles.length;
    Setbtn(count);
}
// 檔案超出限制的最大體積時的回撥
function exceedFileCallback(selectFiles) {


}
//被刪除的檔案: 用於控制上傳按鈕是否顯示...
function deleteFileCallback(delFiles) {
    var count = $("#curCount").val();
    count = parseInt(count) - delFiles.length;
    Setbtn(count);
}
//開始上傳前執行的JS函式.
function StartUploadCallback(data) {


}
//上傳單個檔案後執行的JS函式.
function uploadCompleteCallback(data) {
    try {
        var count = $("#curCount").val();
        count = parseInt(count) - 1;
        Setbtn(count);
    } catch (e) { }
}
//上傳失敗後執行的JS函式.
function uploadErrorCallback(data) {
clearTimeout(timeout);
     if(!data.info){
         alert("網路連線失敗!請檢查網路或者提交頁面地址是否正確!");
     }
}
//全部完成上傳後執行::定向到相簿介面
function allCompleteCallback(data) {
var aid=$("#aid").val();
    alert("上傳成功!");
    window.location.href='pindex?aid='+aid;//儲存成功之後跳轉的方法
}
//改變Flash高度時執行
function changeHeightCallback(data) {


}
//開始上傳:新增引數:aid,表示相簿, mark,表示水印,需要為每個照片都新增這兩個引數。。
function upload() {
    var count = parseInt($("#curCount").val());
    for (var i = 0; i < count; i++) {
        thisMovie("flash").addCustomizedParams(i, { "state":"success"});
    }
    thisMovie("flash").upload();

5、後臺方法:

String imgpath = PathKit.getWebRootPath() + VIDEO_RESOURCE_IMAGE_DIR;
UploadFile Filedata=getFile("picfile",PathKit.getWebRootPath() + VIDEO_RESOURCE_IMAGE_DIR );//檔案和儲存路徑
String FiledataFileName=getPara("pname") ;//檔名稱
String sufix = "";
String newFilename = "";
String state = "SUCCESS";
if (getPara("id") == null || getPara("id").trim().length() == 0) {//新增
int aid = getParaToInt("aid");
Photo photo=new Photo();
photo.set("alubms_id",aid);
if (Filedata != null ) {
sufix = Filedata.getFileName();
sufix = sufix.substring(sufix.lastIndexOf("."), sufix.length());
newFilename = Id.getFileID() + sufix;
photo.set("pfile", VIDEO_RESOURCE_IMAGE_DIR+newFilename);
File ff = new File(PathKit.getWebRootPath()+photo.getStr("pfile"));
Filedata.getFile().renameTo(ff);
if (FiledataFileName == null || FiledataFileName.trim().length() == 0) {
FiledataFileName = newFilename;
}
if (FiledataFileName != null) {
photo.set("pname", FiledataFileName);
}
photo.save();
String smallName = newFilename;
try {
Thumbnails.of(imgpath + newFilename).size(197, 178).toFile(imgpath + smallName);//壓縮圖片需要匯入thumbnailator-0.4.7.jar
} catch (IOException e) {
e.printStackTrace();
}
} else {
state = "";
}

效果頁面: