달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
윈도우 라이브 라이터로 Textyle에 글을 작성할 경우 이미지 파일이 깨져 보이는 현상이 발생..

원인을 찾아보니..

라이브 라이터에서 aaa.jpg 라는 파일을 첨부하면
본문에는 <img src="$aaa.jpg"> 라고 태그가 생성되어 본문이 작성된다..

하지만 XE 에서는 파일 업로드 시 base64 인코딩을 해서
asdgqerhq34gh35hgq3gq3h.jpg 와 같이 암호화 된 파일명으로 변경되게 된다..

그러다 보니 본문에서 aaa.jpg 를 불러오려 해봤자 파일을 찾을 수 없어 엑박이 뜨게 된다.

이를 해결하기 위해 아래와 같이 수정했다.

1. /xe/addons/blogapi/blogapi.addon.php 의 line 208 정도에

case 'metaWeblog.newPost':    라는 곳이 있다.   새글 작성할 경우 이곳에서 처리가 되는데.. 이중에
첨부 파일 정리를 하는
대충 line 258 정도에
$oFileController->insertFile($file_info, $this->module_srl, $document_srl, 0, true);   라는 곳이 있다.
이곳을
$oFile = $oFileController->insertFile($file_info, $this->module_srl, $document_srl, 0, true);  로 바꾼다...그리고 바로 아랫줄에
$obj->content = str_replace($file_info['name'], $oFile->get('upload_filename'), $obj->content); 라고 추가 해준다.
설명 하자면... 
 $oFileController->insertFile() 결과를 $oFile 변수에 담는다....
그리고 두번째 줄은 본문 내용은 파일 네임이 들어간 부분을(aaa.jpg 라고 되어 있는 부분을)  암호화된 파일명으로 교체(replcae) 시키다.
이로써 본문의 내용중 <img src="aaa.jpg">는 <img src="asdgqerhq34gh35hgq3gq3h.jpg"> 로 바뀌게 된다.

2. 게시물을 수정할 때는 기존에 올렸던 파일을 다시 첨부하는게 아니고 본문 내용만 그대로 가져가므로 본문 내용중 파일 이름과 일치 하는 곳은 수정해야 된다.
line 283 쯤에
case 'metaWeBlog.editPost' : 라는 곳을 수정한다.

line 366 쯤에 $obj->content = str_replace( ......생략   이런 부분이 있는데.. 바로 위에 아래 내용을 추가 한다.

$oFileModel = $getModel('file');
$file_list = $oFileModel->getFile($document_srl);  // 현재 게시물에 있는 첨부 파일 리스트를 가져온다.
if(count($file_list)){  // 첨부 파일이 있다면
 foreach($file_list as $file)
{
  $obj->content = str_replace($file->source_filename, $file->upload_filename, $obj->content);  // 본문 중 실제 파일명과 같은 부분을 암호화 된 파일명으로 변경
}
}

이렇게만 수정해 주면 끝...

다만 윈도우 라이브 라이터가 한글 파일을 지원하지 않는다.. 
Posted by SadDev
|