国产欧美二区三区-国产欧美高清-国产欧美国产精品第二区-国产欧美国产精品第一区-小说区 图片区-小说区 综合区 都市激情

當前位置: 首頁 > 站長資訊 > 正文頁面

discuz教程:發帖遠程圖片自動下載到服務器并設置附件原理

為了幫助網站內部人員發帖不用把其他網站上的圖片保存到本地再上傳到服務器。就二次開發了這個功能    不是插件(本人插件技術有限)。9Eh網站目錄_網站網址收錄與提交入口

就是發帖的時候,可以直接復制別人的文章。如果別人的文章里邊包含圖片 ,就自動把圖片 下載到服務器,9Eh網站目錄_網站網址收錄與提交入口

并且可以設置縮略圖,添加到附件列表,diy的時候也可以選擇縮略圖。9Eh網站目錄_網站網址收錄與提交入口

先看下效果吧。9Eh網站目錄_網站網址收錄與提交入口


9Eh網站目錄_網站網址收錄與提交入口


9Eh網站目錄_網站網址收錄與提交入口

下載完成后,自動發帖。9Eh網站目錄_網站網址收錄與提交入口

其實遠程圖片下載并不難,php自帶的文件讀取函數就可以。難的是 要明白 dz發帖自帶的標簽,圖片的存儲,數據的插入等。9Eh網站目錄_網站網址收錄與提交入口

首先縮略圖 用到的數據表為:forum_threadimage表。9Eh網站目錄_網站網址收錄與提交入口

附件表為:forum_attachment(附件帖子對應表)     forum_attachment1~9(附件存儲表)   forum_attachment_unused(臨時附件表)9Eh網站目錄_網站網址收錄與提交入口

剛開始由于不理解原理,繞了很多彎路,9Eh網站目錄_網站網址收錄與提交入口

首先就是  獲取message就是 帖子內容。不過dz已經自動將其標簽化了,遠程圖片標簽為: 上傳的圖片附件標簽為:9Eh網站目錄_網站網址收錄與提交入口

[attachimg]aid[/attachimg]其中aid為附件的id 存儲在forum_attachment(附件帖子對應表)中,具體的附件路徑存在 forum_attachment1~9(附件存儲表)9Eh網站目錄_網站網址收錄與提交入口

所以你要匹配到[img]標簽  然后獲取 url  下載-存儲-插入數據庫。其中比較復雜的是  那個附件臨時表。下載下來的圖片都存儲在附件臨時表中。9Eh網站目錄_網站網址收錄與提交入口

具體發帖的時候  從臨時表中讀取然后插入到forum_attachment1~9(附件存儲表)  ,并且更新forum_attachment(附件帖子對應表)9Eh網站目錄_網站網址收錄與提交入口

更新之前9Eh網站目錄_網站網址收錄與提交入口


9Eh網站目錄_網站網址收錄與提交入口

這里比較重要的是 aid 這個字段9Eh網站目錄_網站網址收錄與提交入口

在這里發布一下JS代碼:9Eh網站目錄_網站網址收錄與提交入口

function validate(theform) {9Eh網站目錄_網站網址收錄與提交入口

var message = wysiwyg ? html2bbcode(getEditorContents()) : theform.message.value;9Eh網站目錄_網站網址收錄與提交入口

if(!theform.parseurloff.checked) {9Eh網站目錄_網站網址收錄與提交入口

message = parseurl(message);9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(($('postsubmit').name != 'replysubmit' && !($('postsubmit').name == 'editsubmit' && !isfirstpost) && theform.subject.value == "") || !sortid && !special && trim(message) == "") {9Eh網站目錄_網站網址收錄與提交入口

showError('抱歉,您尚未輸入標題或內容');9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

} else if(mb_strlen(theform.subject.value) > 80) {9Eh網站目錄_網站網址收錄與提交入口

showError('您的標題超過 80 個字符的限制');9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(ispicstyleforum == 1 && ATTACHORIMAGE == 0 && isfirstpost) {9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(in_array($('postsubmit').name, ['topicsubmit', 'editsubmit'])) {9Eh網站目錄_網站網址收錄與提交入口

if(theform.typeid && (theform.typeid.options && theform.typeid.options[theform.typeid.selectedIndex].value == 0) && typerequired) {9Eh網站目錄_網站網址收錄與提交入口

showError('請選擇主題對應的分類');9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(theform.sortid && (theform.sortid.options && theform.sortid.options[theform.sortid.selectedIndex].value == 0) && sortrequired) {9Eh網站目錄_網站網址收錄與提交入口

showError('請選擇主題對應的分類信息');9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

for(i in EXTRAFUNC['validator']) {9Eh網站目錄_網站網址收錄與提交入口

try {9Eh網站目錄_網站網址收錄與提交入口

eval('var v = ' + EXTRAFUNC['validator'][i] + '()');9Eh網站目錄_網站網址收錄與提交入口

if(!v) {9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

} catch(e) {}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(!disablepostctrl && !sortid && !special && ((postminchars != 0 && mb_strlen(message) < postminchars) || (postmaxchars != 0 && mb_strlen(message) > postmaxchars))) {9Eh網站目錄_網站網址收錄與提交入口

showError('您的帖子長度不符合要求。/n/n當前長度: ' + mb_strlen(message) + ' 字節/n系統限制: ' + postminchars + ' 到 ' + postmaxchars + ' 字節');9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(UPLOADSTATUS == 0) {9Eh網站目錄_網站網址收錄與提交入口

if(!confirm('您有等待上傳的附件,確認不上傳這些附件嗎?')) {9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

} else if(UPLOADSTATUS == 1) {9Eh網站目錄_網站網址收錄與提交入口

showDialog('您有正在上傳的附件,請稍候,上傳完成后帖子將會自動發表...', 'notice');9Eh網站目錄_網站網址收錄與提交入口

AUTOPOST = 1;9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(isfirstpost && $('adddynamic') != null && $('adddynamic').checked && $('postsave') != null && isNaN(parseInt($('postsave').value)) && ($('readperm') != null && $('readperm').value || $('price') != null && $('price').value)) {9Eh網站目錄_網站網址收錄與提交入口

if(confirm('由于您設置了閱讀權限或出售帖,您確認還轉播給您的聽眾看嗎?') == false) {9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

/* if(jQuery('#postsubmit').hasClass('upload_now') ) {9Eh網站目錄_網站網址收錄與提交入口

showError('正在上傳圖片中!請稍后!');9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

} */9Eh網站目錄_網站網址收錄與提交入口

return check_remote_img(message,theform);9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

function theform_(message,theform) {9Eh網站目錄_網站網址收錄與提交入口

theform.message.value = message;9Eh網站目錄_網站網址收錄與提交入口

if($('postsubmit').name == 'editsubmit') {9Eh網站目錄_網站網址收錄與提交入口

postsubmit(theform);9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

} else if(in_array($('postsubmit').name, ['topicsubmit', 'replysubmit'])) {9Eh網站目錄_網站網址收錄與提交入口

if(seccodecheck || secqaacheck) {9Eh網站目錄_網站網址收錄與提交入口

var chk = 1, chkv = '';9Eh網站目錄_網站網址收錄與提交入口

if(secqaacheck) {9Eh網站目錄_網站網址收錄與提交入口

chkv = $('checksecqaaverify_' + theform.sechash.value).innerHTML;9Eh網站目錄_網站網址收錄與提交入口

if(chkv.indexOf('loading') != -1) {9Eh網站目錄_網站網址收錄與提交入口

setTimeout(function () { validate(theform); }, 100);9Eh網站目錄_網站網址收錄與提交入口

chk = 0;9Eh網站目錄_網站網址收錄與提交入口

} else if(chkv.indexOf('check_right') == -1) {9Eh網站目錄_網站網址收錄與提交入口

showError('驗證問答錯誤,請重新填寫');9Eh網站目錄_網站網址收錄與提交入口

chk = 0;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(seccodecheck) {9Eh網站目錄_網站網址收錄與提交入口

chkv = $('checkseccodeverify_' + theform.sechash.value).innerHTML;9Eh網站目錄_網站網址收錄與提交入口

if(chkv.indexOf('loading') !== -1) {9Eh網站目錄_網站網址收錄與提交入口

setTimeout(function () { validate(theform); }, 100);9Eh網站目錄_網站網址收錄與提交入口

chk = 0;9Eh網站目錄_網站網址收錄與提交入口

} else if(chkv.indexOf('check_right') === -1) {9Eh網站目錄_網站網址收錄與提交入口

showError('驗證碼錯誤,請重新填寫');9Eh網站目錄_網站網址收錄與提交入口

chk = 0;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

if(chk) {9Eh網站目錄_網站網址收錄與提交入口

postsubmit(theform);9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

} else {9Eh網站目錄_網站網址收錄與提交入口

postsubmit(theform);9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

return false;9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

function check_remote_img(message,theform) {9Eh網站目錄_網站網址收錄與提交入口

var reg_1 = //[img=/d+,/d+/]([/s/S]*?)/[//img/]/g;9Eh網站目錄_網站網址收錄與提交入口

var reg_2 = //[img/]([/s/S]*?)/[//img/]/g;9Eh網站目錄_網站網址收錄與提交入口

var reg_3 = //[img=/d+,/d+/]([/s/S]*?)/[//img/]/;9Eh網站目錄_網站網址收錄與提交入口

var reg_4 = //[img/]([/s/S]*?)/[//img/]/;9Eh網站目錄_網站網址收錄與提交入口

var args = new Array();9Eh網站目錄_網站網址收錄與提交入口

args['fade'] = 1;9Eh網站目錄_網站網址收錄與提交入口

args['cover'] = 1;9Eh網站目錄_網站網址收錄與提交入口

if( reg_1.test(message) || reg_2.test(message) ) {9Eh網站目錄_網站網址收錄與提交入口

var match = new Array();9Eh網站目錄_網站網址收錄與提交入口

var url_ = new Array();9Eh網站目錄_網站網址收錄與提交入口

match = message.match(reg_1);9Eh網站目錄_網站網址收錄與提交入口

match2 = message.match(reg_2);9Eh網站目錄_網站網址收錄與提交入口

if( match2 == null && match != null ) {9Eh網站目錄_網站網址收錄與提交入口

match2 = new Array();9Eh網站目錄_網站網址收錄與提交入口

match2 = match2.concat(match);9Eh網站目錄_網站網址收錄與提交入口

url = match2;9Eh網站目錄_網站網址收錄與提交入口

for(i = 0; i < url.length; i++) {9Eh網站目錄_網站網址收錄與提交入口

var str = url[i];9Eh網站目錄_網站網址收錄與提交入口

url_[i] = reg_3.exec(str)[1];9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

else if( match2 != null && match != null ) {9Eh網站目錄_網站網址收錄與提交入口

match2 = match2.concat(match);9Eh網站目錄_網站網址收錄與提交入口

url = match2;9Eh網站目錄_網站網址收錄與提交入口

for(i = 0; i < url.length; i++) {9Eh網站目錄_網站網址收錄與提交入口

var str = url[i];9Eh網站目錄_網站網址收錄與提交入口

if( reg_3.test(str) ) {9Eh網站目錄_網站網址收錄與提交入口

url_[i] = reg_3.exec(str)[1];9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

else {9Eh網站目錄_網站網址收錄與提交入口

url_[i] = reg_4.exec(str)[1];9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

else {9Eh網站目錄_網站網址收錄與提交入口

match = new Array();9Eh網站目錄_網站網址收錄與提交入口

match2 = match.concat(match2);9Eh網站目錄_網站網址收錄與提交入口

url = match2;9Eh網站目錄_網站網址收錄與提交入口

for(i = 0; i < url.length; i++) {9Eh網站目錄_網站網址收錄與提交入口

var str = url[i];9Eh網站目錄_網站網址收錄與提交入口

url_[i] = reg_4.exec(str)[1];9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

}9Eh網站目錄_網站網址收錄與提交入口

var html = '

'+9Eh網站目錄_網站網址收錄與提交入口

9Eh網站目錄_網站網址收錄與提交入口

'9Eh網站目錄_網站網址收錄與提交入口

'+9Eh網站目錄_網站網址收錄與提交入口

'9Eh網站目錄_網站網址收錄與提交入口

'+9Eh網站目錄_網站網址收錄與提交入口

'9Eh網站目錄_網站網址收錄與提交入口

發現你的帖子包含'+url_.length+'張遠程圖片
系統將為你自動下載!
9Eh網站目錄_網站網址收錄與提交入口

'+9Eh網站目錄_網站網址收錄與提交入口

'9Eh網站目錄_網站網址收錄與提交入口

'+9Eh網站目錄_網站網址收錄與提交入口

'9Eh網站目錄_網站網址收錄與提交入口


9Eh網站目錄_網站網址收錄與提交入口

'+9Eh網站目錄_網站網址收錄與提交入口

'

    '+9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

    ''+9Eh網站目錄_網站網址收錄與提交入口

    ''+9Eh網站目錄_網站網址收錄與提交入口

    '';9Eh網站目錄_網站網址收錄與提交入口

    showDialog(html,'info','遠程圖片下載','',1,args);9Eh網站目錄_網站網址收錄與提交入口

    setTimeout(function(){9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#postsubmit').addClass('upload_now');9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#uploadRemote .msg').html('圖片下載中,請耐心等待。如果等待時間過長,請從新刷新頁面。謝謝!剩余'+url_.length+'張');9Eh網站目錄_網站網址收錄與提交入口

    i = 0;9Eh網站目錄_網站網址收錄與提交入口

    dois(url_,i,message,theform);9Eh網站目錄_網站網址收錄與提交入口

    return false;9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#upload_show p').hide();9Eh網站目錄_網站網址收錄與提交入口

    },1200);9Eh網站目錄_網站網址收錄與提交入口

    return false;9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    else {9Eh網站目錄_網站網址收錄與提交入口

    return theform_(message,theform);9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    function dois(url_,i,message,theform) {9Eh網站目錄_網站網址收錄與提交入口

    html = '';9Eh網站目錄_網站網址收錄與提交入口

    jQuery.ajax({9Eh網站目錄_網站網址收錄與提交入口

    type: 'POST',9Eh網站目錄_網站網址收錄與提交入口

    url: 'forum.php?mod=uploadRemote&action=newthread',9Eh網站目錄_網站網址收錄與提交入口

    data: {url:url_[i],message:message},9Eh網站目錄_網站網址收錄與提交入口

    dataType: "json",9Eh網站目錄_網站網址收錄與提交入口

    success: function (data) {9Eh網站目錄_網站網址收錄與提交入口

    message = data.message;9Eh網站目錄_網站網址收錄與提交入口

    html2bbcode(editdoc.body.innerHTML = message);9Eh網站目錄_網站網址收錄與提交入口

    message = html2bbcode(getEditorContents());9Eh網站目錄_網站網址收錄與提交入口

    if( data.error == 1 ) {9Eh網站目錄_網站網址收錄與提交入口

    // 圖片下載失敗!9Eh網站目錄_網站網址收錄與提交入口

    html += '

    • 下載失敗9Eh網站目錄_網站網址收錄與提交入口

    • ';9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#upload_show ul').append(html);9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#uploadRemote .msg span').text(url_.length - i - 1);9Eh網站目錄_網站網址收錄與提交入口

    i++;9Eh網站目錄_網站網址收錄與提交入口

    if( i < url_.length ) {9Eh網站目錄_網站網址收錄與提交入口

    dois(url_,i,message,theform);9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    else {9Eh網站目錄_網站網址收錄與提交入口

    setTimeout(function(){return theform_(message,theform);},2000);9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    else {9Eh網站目錄_網站網址收錄與提交入口

    html += '


    • 9Eh網站目錄_網站網址收錄與提交入口

    • ';9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#upload_show ul').append(html);9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#postbox').append('');9Eh網站目錄_網站網址收錄與提交入口

    jQuery('#uploadRemote .msg span').text(url_.length - i - 1);9Eh網站目錄_網站網址收錄與提交入口

    i++;9Eh網站目錄_網站網址收錄與提交入口

    if( i < url_.length ) {9Eh網站目錄_網站網址收錄與提交入口

    dois(url_,i,message,theform);9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    else {9Eh網站目錄_網站網址收錄與提交入口

    setTimeout(function(){return theform_(message,theform);},2000);9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    },9Eh網站目錄_網站網址收錄與提交入口

    });9Eh網站目錄_網站網址收錄與提交入口

    }9Eh網站目錄_網站網址收錄與提交入口

    validate() 為發帖調用js,我是把匹配都放到js中了   然后通過ajax來下載圖片,并且替換標簽 把[img]全部替換為附件標簽[attachimg]9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

    9Eh網站目錄_網站網址收錄與提交入口

      

    此文由 網站目錄_網站網址收錄與提交入口 編輯,未經允許不得轉載!:

    相關文章