글쓰기 할때 외부링크 이미지 모두 저장하기 (1.30) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

글쓰기 할때 외부링크 이미지 모두 저장하기 (1.30) 정보

글쓰기 할때 외부링크 이미지 모두 저장하기 (1.30)

첨부파일

write_update.head.skin.php (6.7K) 804회 다운로드 2009-12-19 09:07:02
delete.lib.php (630byte) 131회 다운로드 2009-11-06 02:27:08
delete.skin.php (160byte) 16회 다운로드 2009-11-06 02:27:08
delete_all.skin.php (518byte) 11회 다운로드 2009-11-06 02:27:08
delete_all.tail.skin.php (313byte) 13회 다운로드 2009-11-06 02:27:08
image_save.php (10.0K) 416회 다운로드 2009-12-19 09:07:02
write_update.head.skin.php (8.2K) 334회 다운로드 2009-12-19 09:07:02

본문

※ [배추베이직스킨 사용자]
7번. write_update.head.skin.php 파일을 다운로드 받으세요.

혹시 필요하신 분 계시면 도움이 될까해서 올립니다.
글쓰기 할 때 외부링크 이미지를 모두 서버에 저장한 후 불러오는 소스입니다.
basic스킨을 기준으로 제작되었으며 EUC-KR버전입니다.

예를 들어
<img src=http://naver.com/logo.gif>

이라고 입력하고 글쓰기 버튼을 클릭하면
logo.gif를 서버에 저장한 후 이미지 주소를 아래와 같이 바꿔서 불러옵니다.
<img src=http://localhost/logo.gif>

에디터를 사용하고 계신 분들은 그냥 이미지를 드래그&복사 후 글쓰기에 붙여넣기 하시면 됩니다.
파일저장 경로는 cheditor4와 같습니다.
에디터 사용유무 또는 종류와 상관없이 data/cheditor4/ 에 저장이 됩니다.


[설치방법]

board 스킨 폴더에 첨부파일을 넣어주시면 됩니다. (basic 스킨용)
기존 사용하고 계시는 스킨 파일과 중복될 경우 덮어쓰지 마시고
직접 소스코드를 추가하셔야 합니다.


[업데이트 내역]

1. 네이버 카페 이미지 저장 가능
2. 글수정 시 가짜 이미지 파일 생성 및 엑박으로 뜨는 문제 해결.
3. 확장자없는 이미지 저장 가능하게 수정 (예: 다음 스타존 이미지)
4. 게시물 삭제시 저장된 이미지파일도 삭제되도록 수정 (여러 게시물 일괄 삭제 포함)
5. 이미지 파일 저장 할때 파일명 중복으로 인한 덮어쓰기 방지 (꿍꿍이님이 알려주셨습니다.)
6. 저장 가능한 이미지 종류 확대
7. 저장 불가능한 이미지의 경우 원래 외부링크 그대로 보존
8. 기존 게시물에 대한 외부링크 이미지 일괄 저장 프로그램 추가
9. 저장할 이미지의 용량제한 가능 (최소용량, 최대용량) (.0 버전)
10. 특정 사이트의 이미지만 저장 (쉼표로 구분, 예: naver,daum) (1.0 버전)
11. 특정 사이트 지정 및 지정한 사이트에 대한 동작 기능 추가 (1.1버전)
12. 외부링크 이미지가 없을 경우에는 동작하지 않도록 수정 (1.11버전)
13. CURL 이미지 저장방식 추가 (1.20버전)
  - 기존 sock방식으로 저장되지 않는 이미지 저장 가능
14. sock 방식 사용 시 curl관련 에러 메세지 뜨는 오류 수정  (1.21버전)
15. referer 추가 (1.30버전)


[옵션 설정 방법]
write_update.head.skin.php 파일을 열고 최상단에 있는 코드를 수정합니다.
image_save.php 파일 역시 동일합니다.

=====================================================================================
$imgSave[max] = 0;   // 저장가능 최대크기, max보다 작아야 저장, byte 단위, 0이면 무제한, 1MB는 (1024*1024)
$imgSave[min]  = 0;   // 저장가능 최소크기, min보다 커야 저장, byte 단위, 0이면 무제한
$imgSave[site]  = "*";  // 사이트 지정, 쉼표로 구분, *는 전체사이트를 말함
$imgSave[mode] = 1;   // 지정한 사이트의 대한 동작, 1이면 site 저장, 0이면 site 제외
$imgSave[type] = "sock";  // 이미지를 읽어오는 방식, sock : fsockopen함수 이용(기본값),     curl : CURL 모듈 이용
=====================================================================================




[기존 게시물에 일괄 적용하기]

- 사용방법 -
1. image_save.php 다운로드 받습니다.
2. common.php 파일과 같은 위치에 저장한 후 실행합니다.
3. 일괄적용 하길 원하는 게시판을 선택합니다.
4. 확인 버튼을 클릭합니다.

- 주의할 점 -
반드시 관련 테이블을 백업 받으신 후 사용하시기 바랍니다.
본 프로그램 사용으로 인한 문제 발생시 제작자가 책임을 지지 않습니다.







추천
20

댓글 99개

오~~이것은!
기존 운영하고 있던 네이버 카페의 이미지가 있는 글들을 복사해오기가 너무 어려웠는데 이팁하나로 그냥 복사해서 붙여넣기만하면 자동으로 이미지를 서버에 저장해서 네이버 카페의 원글이 사라지더라도 엑박이 안뜨는 그 팁이군요! 감사합니다.
전 글복사해서 붙여넣기 하고 글쓰기버튼을 누르면
http://주소/bbs/write_update.php
여기서 완료만 뜨고 흰페이지에서 넘어가지를 않고 글등록이 안되네요

배추베이직게시판스킨..에 해당소스를 붙여넣기했습니다.

data/ 폴더안 cheditor4 도 임의로 만들었는데요...
넵 감사합니다.

http://hompy.info/584 이 게시물을 한번 복사해 봤는데
기본 베이직에 삽입해도 이미지가 엑박으로 뜨던데요~
그리고 엑박안에 사용자 삽입 이미지 라는 메시지가 떠요~

data/cheditor4 /날짜.... 폴더안에 생성된 이미지 파일을 다운받아서 미리보기하니 미리보기가 없다구합니다.

일부 사이트에서는 게시물 이미지가 제대로 저장이 안되나봐요
한번 쓴글을 수정하면 이미지가 엑박이 됩니다.

저장된 이미지 파일을 보니까...
처음 글쓰기를 했을때 이미지 파일이 BFCBBAAEC7CFC0DA_mjh1238_3.jpg
글쓰기를 완료한후 수정하면 BFCBBAAEC7CFC0DA_mjh1238_3_5.jpg 이런 파일이 또생기며 내용에서 이 이미지를 불러오게됩니다.. BFCBBAAEC7CFC0DA_mjh1238_3_5.jpg 를 다운받아 보면 미리보기가 없는 가짜 이미지 파일? 입니다.. 내용에서도 엑박으로 뜹니다

http://lifeinside.dyndns.org/bbs/tb.php/B41_1/21
게시물을 삭제하면 저장된 이미지가 자동으로 삭제되도록 할 수는 없나요?

현재는 삭제가 안되네요..(물론, 수정했을때 3_5 로 다시 네이밍해서 생기는 가짜 이미지 파일도 삭제가 안되네요)
이미 작성된 게시물에 답글로 게시물을 작성할경우 이미지가 내용에 글쓰기 버튼을 누르기전에도 엑박으로 뜹니다. (네이버 카페 이미지 복사)
- 답글에서도 해당 팁이 작동되도록 할 수 없을까요?


이건 어떤 게시판에든 마찬가지 같습니다..
아마 네이버 카페에서 복사해온거라서 그런걸까요??

해결할수는 없을까요?
배추베이직스킨에서 테스트 해보았습니다.
네이버카페 등 대부분의 이미지가 정상적으로 저장되고 불러와집니다.
물론 답글에서도 동일하게 적용이 됩니다.

테스트 게시판 주소는 아래와 같습니다.

http://dooraei.com/bbs/bbs/board.php?bo_table=test


[설치방법]
배추베이직스킨에 제가 올린 파일과 같은 파일이 있더군요. (write_update.head.skin.php)

번거롭겠지만 배추베이직스킨의 write_update.head.skin.php 파일을 열고 제가 올린 파일의 소스코드를 추가해 주셔야 합니다.

대략 40번 라인쯤에 추가하시면 될거 같습니다.

제가 실제 테스트에 사용했던 배추베이직스킨용 write_update.head.skin.php 파일을

테스트게시판에 올려두겠습니다.

아무쪼록 도움이 되길 바랍니다.
지적 감사합니다. 수정해서 올렸습니다. 수정한 코드는 다음과 같습니다.


=========== 수정 전 코드 (69번 라인) ====================
if ($url[host] != $_SERVER['HTTP_HOST']) {
=======================================================


=========== 수정 후 코드 (69번 라인) =====================
if ($url[host] && $url[host] != $_SERVER['HTTP_HOST']) {
========================================================
아래 다음에서 복사해서 올리니 모두 엑박뜨네요.
http://bbs.movie.daum.net/gaia/do/movie/menu/star/photo/list?bbsId=P002
다음은 이미지 속성을보니 확장자가 없어서 그런건가요?
이럴경우에도 엑박안뜨고 잘되게 안될까요?
그런데 게시물을 삭제했을때 저장된 이미지도 삭제되게 하려면 어찌해야하나요???

삭제가 안되면 나중에 관리할 수 가 없을것같습니다..
게시물 삭제했을 때 저장된 이미지도 삭제되게 소스코드 수정해서 올렸습니다.
여러 게시물을 일괄 삭제했을 때도 저장된 이미지가 삭제됩니다.


말씀처럼 삭제가 안되면 나중에 관리가 어려울 것 같습니다.
cheditor4 에디터에서 이미지 삽입하고 글을 삭제해도 이미지 파일이 삭제되지 않길래 대수롭지 않게 여겼던 부분이었습니다.

감사합니다.
겹침현상은 파일명 중복으로 인해 파일을 덮어쓰는 현상을 말씀하시는 건가요?

현재 처리되고 있는 방식은 원래 파일명에 1~10사이의 난수를 더해 변경된 파일명으로 저장하고 있습니다.

(예) abcd.jpg => abcd_1.jpg
네..
그 뒤에 붙는 _숫자 이게요... 겹치는 경우가 있는것 같아요.

그래서 cheditor4/imageupload-class.php 파일에서 함수를 복사해서 수정해보았습니다.

function remote_read($urlstr)
{
$url = parse_url($urlstr);
$domain = str_replace("www.", "", $url[host]); // 도메인
$file = substr($url[path], strrpos($url[path], "/")+1); // 파일명
$basename = str_replace("%", "", substr($file, 0, strrpos($file, "."))); // 파일명 (확장자 제외)
if (empty($basename)) {
$basename = $file;
$extension = "";
} else $extension = substr($file, strrpos($file,".") + 1); // 확장자


1. 위 소스 밑에 해당 명령 추가

$basename = random_generator();  // 랜덤 이름 추가


2. 제일 하단에 random_generator 함수 추가

function random_generator ($min=8, $max=32, $special=NULL, $chararray=NULL) {
    $random_chars = array();
   
    if ($chararray == NULL) {
        $str = "abcdefghijklmnopqrstuvwxyz";
        $str .= strtoupper($str);
        $str .= "1234567890";

        if ($special) {
            $str .= "!@#$%";
        }
    }
    else {
        $str = $charray;
    }

    for ($i=0; $i<strlen($str)-1; $i++) {
        $random_chars[$i] = $str[$i];
    }

    srand((float)microtime()*1000000);
    shuffle($random_chars);

    $length = rand($min, $max);
    $rdata = '';
   
    for ($i=0; $i<$length; $i++) {
        $char = rand(0, count($random_chars) - 1);
        $rdata .= $random_chars[$char];
    }
    return $rdata;
}
게시물을 이동할경우 이미지 파일도 해당 게시물 폴더로 이동되어야 맞지 않나요?
물론 내용에서 이미지 파일 링크도 이동된 링크로 변경이 되어야하겠죠..
일반적인 첨부파일은 해당 게시물 폴더로 저장되지만
cheditor4는 data/cheditor4/년월 폴더에 저장됩니다.
( 예: data/cheditor/0911 )

이 팁은 cheditor4와 같은 방식으로 외부링크 이미지를 파일로 저장하므로
게시물이 이동하여도 저장된 이미지파일의 경로에는 영향을 미치지 않습니다.
또한 글내용에서 이미지 파일 링크도 이와 동일합니다.

다만 월단위 폴더로 파일이 집중되므로 파일명 중복으로 인한 덮어쓰기가 발생할 수 있습니다.
이를 최소화하려 하였으며 꿍꿍이님의 도움으로 코드가 견고해질 수 있었습니다.

외부이미지의 저장된 파일명 : 원본파일명_random_generator()

function random_generator ($min=8, $max=32, $special=NULL, $chararray=NULL)
혹시 샤방s님 죄송한데 기존에 등록된 게시물에 적용되게 하려면 어케 해야 하나요??
스킨바꾼다음에 일일히 수정해야 하는지요??1000개정도 되는데 이거를 일괄적용하게끔 못하나요?ㅎㅎ
내용보기에 슬라이드쇼가 출력되는 게시판이 있는데 원본은 이미지가 첨부되지 않을 경우 슬라이드쇼가 출력이 안되는데 이코드를 적용하니까 빈 슬라이드쇼가 출력이되더라구요..
사용해본결과 잘되네요^^ 아직 게시물 100개만 해봐서 나중에 문제잇음 또 코멘트 달겠습니다
아주훌륭하신 프로그램입니다 ㅎㅎㅎ 잘쓰겠습니다 그리고 혹시 게시물삭제시는 파일은 그대로 있던거 같은데 게시물삭제시 이미지 파일도 같이 삭제는안되는가요??테스트해본 게시물을 삭제했는데 이미지는 고대로 잇네요 ㅠㅠ // 그리고 이미지 저장폴더는 각매월달별로 저장이 되는건지?현재는 0911에 저장이 되던데 12월에는 0212에 저장이 되는건가요?? 요 두가지만 답변좀 부탁드립니다
잘되신다니 다행이구요.
이미지 저장폴더는 월별입니다. 현재 0911이고 12월에는 0912입니다.
게시물 삭제시 이미지도 같이 삭제하시려면 첨부파일 2번~4번을 해당 스킨폴더에 넣어주셔야 해요. ^^
정말 멋지네요.

염치 불구하고 약간의 건의를... ^^
해당 게시판의 저장 폴더로 그림 파일이 저장되었으면 좋겠습니다. 물론 파일명의 중복될 수 있는 문제등의 해결이 필요할 수도 있겠지만요. (현재의 저장 위치가 더 좋아보이지만, 혹시해서 건의해봅니다.)

두번째는 특정 사이트의 이미지를 변환시켜 저장하는것과는 반대의 기능으로 특정 사이트의 이미지는 변환하지 않는 옵션도 있었으면 좋겠습니다.
예를 들어, 플리커의 이미지 파일을 게시판에 링크 게시했을때 이것은 변환하지 않고 그대로 유지하는것이지요.

두번째 기능이 저에게는 절실하네요. 이미 멋진 플러그인이지만 그누를 더욱 빛나게 할 소스로 자리 잡을걸 믿어 의심치 않으며...

좋은 자료 감사합니다.
좋은의견 감사합니다.
두 번째만 적용한 버전을 올렸습니다.  첫 번째 의견은 차후 고려하도록 하겠습니다.
자세한 사용법은 본문을 참고하시길 바랍니다.

다음은 플리커만 제외하는 옵션 설정입니다.

======================================================================
$imgSave[site]  = "flickr";  // 사이트 지정, 쉼표로 구분, *는 전체사이트를 말함
$imgSave[mode] = 0;  // 지정한 사이트의 대한 동작, 1이면 site 저장, 0이면 site 제외
======================================================================

감사합니다.
배추베이직 스킨에 적용시켰더니, 이미지 저장은 정상적으로 되지만, 에디터의 테그 적용이 안되는 버그가 있습니다.

뭐라고 설명해야하나, 에디터로 테그를 사용하여 문서를 작성하여 저장하면 그냥 텍스트에리어에 글을 적은것 처럼 됩니다.
동영상 링크 걸면 동영상 소스가 변경되는 버그 리폿하러 왔더니, 이미 해결(1.11)되었네요. 수정 소스 감사합니다.
글쓰기 할때 외부링크 이미지 모두 저장하기 (1.20)
업데이트후 사용해보니
단순 텍스트 복사후 붙여넣어서 글쓰기 하면 에러발생합니다.


배추빌더 사용자라 7번. write_update.head.skin.php 파일을 다운로드 사용함!
알려주셔서 감사합니다. 1.20 버전에서 오류메세지를 확인하였습니다.
현재 오류는 수정되었으며 정상 작동을 확인하였습니다. (1.21 버전)
외부링크의 경우 특정 사이트는 가짜 이미지 파일을 제공해서 이미지를 못가져가게 하는데 이런 경우는 다른 저장 방법이 없나요?

http://www.ppomppu.co.kr/zboard/view.php?id=etc_info&no=11967
매우 잘 쓰고 있습니다.
근데
'http://www.'주소일 때 저장이 되는데 'http://주소' 일때는 적용이 안되더군요.
아래 부분을
if ($url[host] && $url[host]  != $_SERVER['HTTP_HOST']) {
다음과 같이 바꾸니 적용 됩니다.(x-y.net 쓰고 있습니다.)
if ($url[host] && $url[domain] != $_SERVER['HTTP_HOST']) {
감사합니다.
테스트를 해보았으나 그러한 문제를 발견할 수 없었습니다.
적용이 되지 않는 주소를 알려주시면 많은 도움이 될 것입니다.
' where wr_id=24

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'return goOtherCR(this,"a=nco_001*i&r=1&i="+urlencode("00000015_0000000' at line 1

error file : /image_save.php

배추빌더 최신을 쓰는데요 한번 해봤는데 이런 에러가 납니다..
저도 마찬가지 인데요, 특정 글에서만 그런듯합니다.
근데 이런 현상이 아래와 같이 발생하는데요...

===============================아래=======================================

update g4_write_ac_valueeng set wr_content='- 최근 건설사업 진행 과정의 예산 낭비 요인과 비효율을 제거하여 건설사업을 효율화하기

· VE 제도가 정착되기 위해서는 민간 단체의 활동보다는 정부의 제도 신설이 효과적임.
· 국내 건설산업에 적합한 VE 제도를 도입하기 위한 기반 연구가 선행되어야 함.
· VE 전문가나 교육자에 의해 VE에 대한 실질적인 교육 및 지도가 될 수 있는 여건 조성이
필요함
' where wr_id=107

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VE 전문 기술 자격증(CVS)'을 공공
기관에서도 인정해주도록' at line 1

error file : /plugin/admin/board/image_save.php
===============================아래 끝=======================================

이런 현상이 발생하는 게시물을 위의 내용으로 찾아가서 글 복사후 메모장에 붙여넣고 이 메모장의 내용을 복사해서 다시 글쓰기의 내용란에 내용을 붙여넣으면
이 게시물은 패스됩니다. 정상적으로 작동된다는 이야기죠..

아마 게시물의 특정 태그때문에 걸리는 문제가 아닌가 한데요???

근데말이죠... 저 게시물안에 이미지가 없다는거란 말이죠...
이미지가 없어도 이미지저장 시도를 한다는 말이죠...ㅎㅎ...
아직까지 댓글을 확인하신다면 한가지 건의드려도 될까요? 외부 이미지 저장할때 이미지 사이즈를 줄여서 저장을 할수는 없을까요?

일정 크기 이상의 이미지는 웹호스팅을 받는 사람이라면 트래픽과 웹용량에 압박에 시달리거든요..
그래서 일정 크기 이상의 이미지는 줄여서 저장을 한다던지 가능할까요?
샤방님 좋은 팁주셔서 감사합니다

리스트에 부분은 어떻게수정해야 할까요 리스트 액박떠서 그러는대

최신글에 적용시킬수 있을까요 늦었지만.......................
감사합니다
요거 잘쓰고 있는데요~
질문이 하나 있습니다.
타 사이트에있는 이미지를 긁어서 붙여 넣기 하고 글쓰면 이미지가 /data/cheditor4/숫자폴더/ 에
저장이 되잖아요.
요렇게 글을 쓰면
최신글 스킨에는 이미지가 안뜨는데...
최신글 스킨에 이미지가 뜨게 하려면 어떻게 해야되나요?
도와주세요...ㅠㅠ
존경스럽습니다.. 진정 대박이십니다.

베리베리 잘됩니다 ㅠㅠ

삭제시 섬네일까지 모조리 삭제 잘되구요. ㅠㅠ

참고로 배후스킨 오늘날짜로 최신버젼 깔고 했는데 잘됩니다.

배추스킨 쓰시는 분들은 2번~ 7번까지 다운받으셔서,

같은 이름의 파일들은 파일 열으셔서 추가 해 주시면 됩니다.^^

감사합니다. !!!!!!!!!!
http://www.3dm3.com/tutorials/sony-ericsson/

사이트에서 파일 저장이 안됩니다.

이미지는 생성이 되는데 가짜 파일로 1kb 짜리가 만드어지네요.

도움 부탁드립니다.
좋....은데

설명을 좀 정리를 해서 올렸으면 더 좋았을텐데요...

그리고 위에 님처럼 안되는 사이트도 많은듯...
샤방님... 일반 도메인은 아무 문제 없이 저장이 되는데요...
도메인 앞부분에 숫자가 붙은 도메인은 이미지가 저장이 않되네요...ㅠㅠ;;
이런 이미지들은 저장이 않되네요... 어디를 어떻게 수정을 해야 될지 몰라서요...
http://25.media.tumblr.com/718655c3a30c914a68f20ac3015611ef/tumblr_ml5286IqS31s955g9o1_500.jpg
부탁드릴께요~ ㅠㅠ;;
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT