자유게시판

제목 Query Uploadify 2 + CodeIgniter
글쓴이 미드필드 작성시각 2010/01/29 15:20:12
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 25255   RSS
팁 게시판 터프키드님 글보고 구글링 하다가 발견했는데요..

uploadify V2 로 CI 하고 연동해 놓은것 같은데.

소스 다운받아 그대로 따라 했는데도 전 에러 나네요 코멘트 글들은 잘된다고 하는거 같은데.. 뭐가 문제인지 모르겠네요. ㅡㅡ

고수님들 혹시 해보시고 도움좀 주세요..

http://www.reloadedpc.com/code-igniter/jquery-uploadify-2-codeigniter/
태그 Query Uploadify 2 + CodeIgniter
 다음글 가입인사 올립니다~~~ (4)
 이전글 세미나 참고용 자료들.. (2)

댓글

변종원(웅파) / 2010/01/29 15:25:47 / 추천 0
어느 에러가 나는지 올려주셔야.....
데모파일 보니 js가 외부로 빠져있는데 .htaccess 때문에 안될 수도 있습니다. 예외처리 안하면 무조건 index.php를 붙이려고 할테니까요.
미드필드 / 2010/01/29 15:42:56 / 추천 0
htaccess 지우고 index.php/upload/ 해서 접근해도 똑같은 에러가 나오네요.

에러내용은 아래와 같습니다.

  • Extension:

    A PHP Error was encountered

    Severity: Notice

    Message: Trying to get property of non-object

    Filename: upload/uploadify.php

    Line Number: 3

  • File Size:

    A PHP Error was encountered

    Severity: Notice

    Message: Trying to get property of non-object

    Filename: upload/uploadify.php

    Line Number: 4

  • File Path:

    A PHP Error was encountered

    Severity: Notice

    Message: Trying to get property of non-object

    Filename: upload/uploadify.php

    Line Number: 5



변종원(웅파) / 2010/01/29 16:04:08 / 추천 0
커억~~~ 샘플을 올려놓은걸 보니 아주 원초적인 실수를 하나 했네요.
업로드 디렉토리를 만들어놓은 것은 upload로 해놓고
프로그램 안에서는 uploads로 처리를 했네요. ㅋㅋㅋㅋ
디렉토리명만 uploads로 바꾸면 끝입니다.

그리고 한글처리가 없습니다. 한글파일을 올릴 경우 말씀하신 에러가 나오네요.
영문일 경우 이상없이 업로드 됩니다.
양승현 / 2010/01/29 16:13:13 / 추천 0
웅파형님이 알려줘서 한번 봤는데 괜춘네요~!

차기 게시판 업로더에 적용해 보아야 겠습니다.
변종원(웅파) / 2010/01/29 16:17:10 / 추천 0
fckeditor나 ckeditor 업로더가 좀 마음에 안들었는데 이걸로 업로더 대체하고
사용해도 될 것 같네요. 한글파일명 처리 부분과 db insert만 추가하면 되겠네요.
미드필드 / 2010/01/30 01:45:57 / 추천 0
 아 업로드 폴더명은 수정했었는데 한글파일명을 생각 못했군요..
웅파님 감사합니다..

몇가지 테스트를 해 보았는데 이미지나 텍스트 파일만 업로드 하게 세팅( fileExt : '*.jpg;*.gif;*.png',) 해 놓았을때

PSD 나 PHP 파일을 확장자만 이미지(GIF, JPG) 로 변경하고 업로드하니 업로드가 되어 버리네요.

이부분을 체크 해야 될것 같은데 좋은 아이디어 없나요?


사월 / 2010/01/30 07:14:59 / 추천 0
저도 Uploadify 사용하고 있습니다.
위 링크의 것은 아니고 CI의 Upload 라이브러리를 수정해서 사용하고 있구요;;
그리고 한글 파일명은 윈도우 환경에서는 에러가 났는데 리눅스에서는 정상적으로 되더군요. (utf-8  환경)

사월 / 2010/01/30 07:24:15 / 추천 0
그리고,
config/mimes.php 에 application/octet-stream 을 추가해야하는 이유는 flash를 통해 업로드하는 파일이 정상적인 mime type이 아닌 application/octet-stream 으로 되기 때문이고,
이미지 여부는 getimagesize()로 확인하고 있습니다.

미드필드 / 2010/01/30 09:17:45 / 추천 0
사월님 포럼을 보니까 다른 사람들도 보안 이슈 떄문에 의견이 분분한거 같던데요
외국포럼에서 어떤 사람이 리플 단거 보니까 플래쉬업로더를 통해서는  PHP 파일도 업로드 될수 있다고 하던데 이런 문제점들은 CI upload 클래스에서 다 막을수 있는 건가요?
소스를 공유 좀 해주실수 있는지요?


사월 / 2010/01/30 18:36:28 / 추천 0
저는... 업로드는 아무 파일이나 할 수 있게 하고, 이미지를 제외한 파일은 파일명을 랜덤으로 바꾼후 다운로드 할때는 PHP 거쳐서 받도록 해두었습니다.
다운로드할때는 id값만 사용하고 파일명은 공개되지 않도록 했고, CI의 force_download() 헬퍼 함수를 사용했습니다.
그리고,
업로드되는 디렉토리는 아예 다른 호스트로 지정해둔후, 그쪽 가상 호스트는 PHP가 실행되지 않도록 해뒀구요.
(이 부분은 리눅스랑 아파치에서 해야하는 거라서 웹호스팅에선 불가능함-_-;; )

쏘스는.. 업로드쪽만 완벽하게 분리를 해놓질 않아서 공개하기가 좀 애매하네요;;
공개를 해도 다른 곳에서 쓰는 코드랑 섞여있는지라-_-;;

getimagesize()로 이미지인지 아닌지 확인하고
이미지가 아닌 경우는 아래 코드로 처리하게 했습니다.

		// 이미지가 아닌 경우(& 이미지이지만 위의 네가지에 속하지 않는 경우) : 랜덤 암호화 파일명
		if ($this->uploaded_data['file_type'] == BOARD_FILE_TYPE_OTHER) {
			mt_srand();
			$this->uploaded_data['file_name_new'] = md5(uniqid(mt_rand(), true));
		}
		
		// 서브 디렉토리 생성
		$this->uploaded_data['sub_dir'] = substr(md5(microtime()), 0, 2);
		$upload_dir = $this->upload_path . $this->uploaded_data['sub_dir'];
		if (!is_dir($upload_dir)) {
			@mkdir($upload_dir);
		}
		
		//
		if (move_uploaded_file($_FILES[$field]['tmp_name'], $upload_dir . '/' . $this->uploaded_data['file_name_new']) === false) {
			$this->uploaded_data['error'] = PH_UPLOAD_ERR;
			return;
		}
이 코드에도 따로 사용중인 상수, 변수가 있으니 참고만 해주세요;;