HTML
Javascript
Flash Actionscript
PHP
mySQL
ASP
MS-SQL
Linux
Others
Ziwoo Board
Portfolio
About
Flash Actionscript
작성  2007-08-21 16:44:09   추천: 610   조회: 65536
제목  플래시8을 이용한 파일업로드(프로그래스 바)
이름(ID)  지우 (ziwoo)
링크1  http://www.ziwoo.net/fu
파일
  파일명: fu_2012.02.16.zip 파일크기: 131,136 byte 다운로드: 9,239
플래시8부터 제공되는 파일업로드 기능을 응용한 업로드입니다.
만들어 놓은지는 반년 쯤 넘은것 같은데..
오늘 서버에 폴더 정리하다가 발견해 올려봅니다.

[브라우저 호환]:
IE8, 파이어폭스8, 크롬15, 오페라11, 사파리5

[설치/사용법]
압축파일을 풀면 fu폴더 안에 다음과 같이 파일이 들어있습니다.

fu
- files 디렉토리 : 임시업로드 파일이 저장되는곳. (필히 chmod 777로 조정)
- index.php 테스트를 할 수있는 메인페이지.
- multi_upload.swf 다중업로드가 가능한 쇽웨이브 파일
- single_upload.swf 싱글업로드만 가능한 쇽웨이브 파일
- fu.js 플래시가 호출하는 자바스크립트 함수 모음
- upload.php 플래시 업로드가 필요로하는 php 업로드 파일

서버의 적당한곳에 압축풀고..
files 폴더에 쓰기 가능하도록 접근권한 변경하시고..
http://위의 적당한URL/fu 로 접속해보시면 됩니다.

코딩을 하다보면 멀티업로드만 필요한 경우도 있지만,
싱글파일이 여러개 필요한 경우도 많지요..
상황에 알맞게 index.php를 참고하여 수정해서 쓰시면 됩니다.

P.S. 몇 메가 이상은 업로드가 안된다는 분들을 위한 [php.ini] 설정
1. post_max_size
2. upload_max_filesize
플래시 업로더를 삽입할때 HTML에서 업로드 용량을 설정할 수 있긴 하지만
그보다는 php.ini에서 설정된 용량 제한이 우선합니다.
<?=phpinfo()?> 함수를 이용해 php설정 중 위의 두 값을 확인해보면 설정된 업로드크기를 알 수 있습니다.
이 설정보다 큰 파일을 업로드하게되면 업로드가 제대로 되지 않습니다.
php.ini 파일의 다음 부분을 찾아서 적절하게 변경하세요.

; Maximum size of POST date that PHP will accept.
post_max_size = 10M

; Maximum allowed size for uploaded files.
upload_max_filesize = 10M


[개선사항 - 2011.12.01]
- 기존 플래시 폼요소들의 테두리나 글자색을 약간 변경했습니다.
- Border-color를 플래시 외부에서 변수로 지정하게 했습니다.
- 멀티업로드의 파일 순서 변경기능을 추가했습니다.
- 싱글 업로드의 경우 $_FILES["이름"]["name"][0] => $_FILES["이름"]["name"]으로 변경.

[개선사항 - 2011.12.03]
"동영상의 스크립트로 인해 Flash 플레이어의 실행 속도가 느립니다.
계속 실행하면 컴퓨터에서 응답하지 않을수도 있습니다.
스크립트를 중단하시겠습니까??"
- 대용량 업로드시 위와 같은 메세지가 나오는던것을 개선하였습니다.
- 대용량 파일이 없어서 1.4GB까지만 테스트해봤습니다.

[개선사항 - 2011.12.05]
- 심플업로드 추가

지우넷에서 테스트 해보시려면
http://www.ziwoo.net/fu 를 클릭!

덧글 (83)
지나감(61.109.140.177) 2007-08-24 04:55:45
와우 좋네요
파일 선택버튼을 html 요소로 뺄순없을까요? 이미지나 button테그로...
용량표시도 html요소로 빼야할듯...
그리고 멀티업로드시 전체 용량제한과 더불어 개개별 제한도 필요할듯
firefox에서 동작하지 않습니다.
rain(222.112.1.90) 2007-08-24 10:08:25
Oho ~
신기루닷컴(124.59.113.7) 2007-09-05 11:59:00
좋은 정보 감사합니다^^;
문의(210.113.36.23) 2007-09-28 11:29:47
문의좀 드립니다
실제 서버에 업로드가 이루어지는것인지요
아니면 말그대로 그냥 데모인지요
문의(210.113.36.23) 2007-09-28 11:31:42
지우님의 데모사이트처럼 에러없이 실행이 됩니다만
실제 서버에는 업로드된 파일이 생성이 안되는데요
지우(ziwoo) 2007-09-28 12:20:19
업로드 됩니다.
데모에서 결과를 보여주는것도 실제 엄로드 된 파일의 정보입니다.
다만 데모이므로 index.php 열어보시면 화면에 보여준 후
모두 unlink() 로 파일을 지우고 있습니다.
unlink() 바로 앞에서 해당 파일을 원하시는 대로 옮기던지 복사하시면 될겁니다.
별밤(211.203.179.130) 2007-12-02 19:38:31
is_uploaded_file() 업로드 된걸 확일할 수 있나요?
지우(218.155.158.95) 2007-12-02 21:17:17
//별밤
upload.php에 넣어서 테스트해보세요. 될겁니다.
정경환(121.64.233.67) 2008-02-10 13:23:46
정말 감사합니다. 찾고있던 중에 마침 발견했네요.
제로보드에서도 쓸 수 있을까요?
지가나는이...(59.29.226.208) 2008-03-04 11:11:27
jsp 에 적용을 해보려고 하니... 대략 httpError() 를 뱉어내고 있습니다.

httpError() 어느부분에서 호출을 하나요~?
지우(ziwoo) 2008-03-05 10:45:35
호출하는곳은 플래시파일 열어보시면..
첫번째 레이어 액션부분에 있습니다만..
그보다 아래 링크를 참고해보세요.
http://blog.naver.com/realgoldhwan?Redirect=Log&logNo=120034846541
이지빌더(222.114.56.157) 2008-03-09 17:23:53
안녕하세요? 지우님께서 만드신 플래더 업로더를 이제 사용해볼 일이 있어서 이것저것 테스트를 해봤는데요.

샘플에서 파일업로드1의 이미지 파일이라고 되어있는데 파일선택시 파일이름에 *.*을 입력하면 아무파일이나 업로드가 가능합니다..

음 그래서 그런데 자스로 확장자를 체크하는 기능이 있었으면 좋겠네요^^;

시간이 되신다면 이왕이면 사용자지정파일을 자스에서 지정하여 지정된 파일만 올릴수 있도록 되면 더욱 좋지요..제가 플래쉬쪽은 잘 몰라서요; 바쁘시면 어쩔수 없지만요..ㅎㅎ

아참, 그리고 마지막으로 요즘은 글작성시 에디터를 많이 사용하잖아요? 그래서 만약 기능추가하실 여건이 되신다면 멀티업로드에서 파일선택시 버튼을 눌러서나 아니면 파일선택시 자동으로 서버에 저장이되게 처리한후 이미지 파일을 더블클릭했을경우 에디터에 이미지 삽입이 된다면 어떨까해서요...그럼 수고하세요~^^
이기홍(121.172.46.225) 2008-04-11 21:49:23
안녕하세요.왕초보입니다.
온라인을 온통 뒤져서 파일업로드 소스를 &#52287;던중 정말 맘에드는 소스를 발견해서
넘넘 흥분하고 좋아 했는데 막상 설치해놓고 보니까 파일이 올라가는것이 안보여서요,
위에서 말씀하신부분중 아래에 말씀하신 내용이 도저히 이해가 안갑니다.
제발 어떻게 옮기고 복사를해서 어떻게 하라는건지 이해가 갈수 있도록 알려주시면
고맙겠습니다. 부탁드립니다. 꼭~~ 필요한거고 이쪽에 대해선 무뇌한이라서요..
=============================================================================
업로드 됩니다.
데모에서 결과를 보여주는것도 실제 엄로드 된 파일의 정보입니다.
다만 데모이므로 index.php 열어보시면 화면에 보여준 후
모두 unlink() 로 파일을 지우고 있습니다.
unlink() 바로 앞에서 해당 파일을 원하시는 대로 옮기던지 복사하시면 될겁니다.
===========================================================================
unlink() 바로 앞에서 해당 파일을 원하시는 대로 옮기던지 복사하시면 될겁니다.
이부분을 어떻게 하라는건지 꼭좀 초보들이 알수잇도록 알려주십시요.
부탁 부탁 드립니다.
지우(218.155.158.158) 2008-04-12 03:07:13
for($i=0;$i<count($_FILES['smu01']['tmp_name']);$i++){
echo "\$_FILES['smu01']['name'][$i]: ".$_FILES['smu01']['name'][$i]."<br>";
echo "\$_FILES['smu01']['tmp_name'][$i]: ".$_FILES['smu01']['tmp_name'][$i]."<br>";
echo "\$_FILES['smu01']['size'][$i]: ".$_FILES['smu01']['size'][$i]."<br><br>";
@unlink($folder_name."/".$_FILES['smu01']['tmp_name'][$i]);
}

index.php 34 번 라인쯤에 보면 위와 같은 부분이 세개 있습니다.
그 중 첫번째 업로드 폼에 부여했던 이름인 "smu01" 부분만 가지고 설명하자면..

echo 명령으로 아래 세가지 정보를 보여주고있습니다.
- name <= 오리지날 파일명 (ex. 겨울숲.JPG)
- tmp_name <= 서버에 올라온 실제이름 (ex. smu01__swfupload__겨울숲.JPG)
- size <= 파일의 크기

POST로 업로드하는 일반적인 경우에도 대부분 세가지 정보만으로 처리하는데요..
단순히 그냥 파일만 복사하는 경우도 있습니다만 이 경우 중복이름 문제가 걸리겠지요..
지우보드 경우, DB에는 원래이름, 고유한이름, 파일크기 등을 인서트하고
파일은 일정한 사이즈로 줄여서 고유한이름으로 저장합니다.

for($i=0;$i<count($_FILES['smu01']['tmp_name']);$i++){
copy($_FILES['smu01']['tmp_name'][$i], $_FILES['smu01']['name'][$i]) ;
unlink($folder_name."/".$_FILES['smu01']['tmp_name'][$i]);
}

단순히 복사만 한다면 위처럼
첫째줄에서 임시이름을 원래이름으로 바꿔서 저장하고
둘째줄에서 unlink로 지우면 되겠네요..

GD가 깔려있고 이미지 크기를 바꿔어서 저장하려면 아래 예제를 참고하세요.

for($i=0;$i<count($_FILES['smu01']['tmp_name']);$i++){
    $ext = strtolower(strrchr($_FILES['smu01']['name'][$i],"."));
    $size = getimagesize($_FILES['smu01']['tmp_name'][$i]);           
    //가로를 715 이하로 제한하는 썸네일
    if($size[0]>715) {
        $rewidth = 715;
        $reheight = 715 * $size[1] / $size[0];
    }else{
        $rewidth = $size[0];
        $reheight =$size[1];
    }

    $img_file_name = $_FILES['smu01']['tmp_name'][$i];
    $dstimg = ImageCreatetruecolor($rewidth,$reheight);
    if($ext==".jpg") $srcimg = ImageCreateFromJPEG($img_file_name);
    if($ext==".gif") $srcimg = ImageCreateFromGIF($img_file_name);
    if($ext==".png") $srcimg = ImageCreateFromPNG($img_file_name);
    Imagecopyresampled($dstimg, $srcimg,0,0,0,0,$rewidth,$reheight,ImageSX($srcimg),ImageSY($srcimg));
    ImageJPEG($dstimg, $ABS_DIR."/photos/".$_GET["idx"]."/".$_FILES['smu01']['name'][$i],90);
    @unlink($_FILES['smu01']['tmp_name'][$i]);
}

copy 명령이나 GD 사용법등은 관련 자료를 찾아보시고요..

혹시나 모르실까해서..
@는 해당라인에 에러를 무시하란 뜻입니다.




이기홍(121.172.46.225) 2008-04-12 15:06:54
정말 이렇게까지 빠르고 정확한 답변을 기대하지 안았는데 이렇게까지 답해주시다니..
너무너무 감사합니다. 정말 친절하신 운영자님 고맙습니다. 답변을 토대로 이제 사용하고저
했던 소스를 가지고 사용할수 있겠내요.. 다시한번 진심으로 감사드립니다.
항상건강하시고 늘.. 행복하십시요.
질문인(220.124.222.137) 2008-04-22 18:20:12
안녕하세요.질문이 있어서 문의드립니다.
소스를 테스트 하던중 종종 ioError 가 발생하여서요.
여기저기 찾았보았는데 딱히 찾지를 못해서.....

혹시나 어떤 경우의 저런 에러가 나는지 알수 있을까 해서 문의글 남깁니다.

그럼 좋은 하루 되세요 ^ ^
지우(218.155.158.158) 2008-04-23 02:37:07
//질문인
http://livedocs.adobe.com/flex/201/langref/flash/net/FileReference.html#event:ioError
영어가 짧은지라.. 해석은 직접해서 보세요..
가을이(210.110.163.22) 2008-04-29 16:20:00
올려주신 자료는 정말 잘 쓰고 있습니다. 감사합니다. 문제가 하나 있어서요. '(싱글쿼테이션"이 있는 파일명은 업로드 자체가 에러나는군요. 이 부분은 어떻게 처리를 해야 할런지...upload 쪽으로 파일 자체를 넘기지 못합니다. 플래시 자체에서 에러가 발생하는 듯 해서요.
지우(220.127.219.237) 2008-04-30 10:59:16
//가을이
그림파일 이름을 [테'스트.jpg]로 리네임해서 업로드해봤습니다.
파일은 잘올라갑니다. 다만 보여주는 부분에서 따옴표 간섭으로 파일 경로가 왜곡되는 문제만 있네요. 이 부분은 php 코딩시 감안하여 프로그램한다면 문제 없을것으로 보입니다.
질문해요(211.205.78.152) 2008-05-13 01:04:12
    if(is_dir($folder_name)) {       
        $dir_obj=opendir($folder_name);
        while(($file_str = readdir($dir_obj))!==false){
            if($file_str!="." && $file_str!=".."){
                $split_str = explode("__swfupload__",$file_str);
                $_FILES[$split_str[0]]['tmp_name'][] = $file_str;
                $_FILES[$split_str[0]]['name'][] = $split_str[1];
                $_FILES[$split_str[0]]['size'][] =  filesize($folder_name."/".$file_str);
            }
        }
        closedir($dir_obj);
    }

이부분이 파일을 읽어오는 부분같은데 저는
파일명을 md5을 사용해서 변형해서 저장해서 사용하려고하는데
$split_str = explode("__swfupload__",$file_str);
이부분에서
문제가 발생해서요

위에 while을 안사용하고 php에서처럼 그냥
$_FILES['userfile']['tmp_name'][$i]
이렇게해서 못읽어내나요?
지우(59.7.1.149) 2008-05-13 12:12:38
//질문해요
$_FILES['userfile']['tmp_name'][$i] 처럼 사용하려면 upload.php 파일 안에서
그렇게 처리해야만 하는데요..
독립적으로 실행되지 못하고 플래시안에게 의존하여 실행되는 upload.php 안에서 그렇게 하는게 의미가 있을까 싶네요..

첫째로,  $_FILES['userfile']['tmp_name'][$i] 처럼 구해진 데이터를 그안에서 바로 복사하던지 DB에 넣든지.. 어떻게든 처리를 해야 하는데요..
(예를 들면 idx 값을 같이 넘겨서 해당 이름으로 저장하든지 하는..)
가능은 하겠지만 좀 복잡해지죠.. 편집이 아닌 글쓰기 상태라면 idx도 생성되기 전 일테고..

들째로 멀티 업로드라던지.. 한페이지에 두개 이상의 업로드 폼이 있는 경우..
마찬가지로 복잡해질겁니다.

알아서 판단하셔서 코딩하시면 될것 같고요..

$split_str = explode("__swfupload__",$file_str);
이부분에서 문제가 발생할 일은 없는듯 보입니다.
md5() 적용을 마지막에 하시면 될테니까요..



질문해요(211.178.234.103) 2008-05-13 23:00:27
지우님 답변 감사합니다.

플래시 파일업로드 감사히 사용하겠습니다 ^^
좋은하루 되세요.
ㄳㄳ(143.248.130.79) 2008-05-26 16:25:43
감사합니다. 많은 도움이 되었습니다. ^_^;
궁금해요~(143.248.130.79) 2008-05-27 14:13:50
지우님, 답변 감사합니다.

저도 여러방면으로 원인을 알아봤는데... display태그 문제인 것 같습니다.
visible태그로 hidden했을 경우에는 플래시가 리로드 되지 않았는데... display에서는 리로드 되더군요...

FF에서 비슷한 문제를 경험한 분들이 있는 것 같습니다.

다른 곳에 질문한 내용을 첨부했습니다.
(혹 플생사모 회원이 아니시라면 아마 가입하셔야 글을 볼 수 있을 것 같네요 ㅜㅜ;)

http://cafe.naver.com/flashdev/29350
지니(58.150.173.195) 2008-06-30 13:43:27
오류가 발생합니다.
windows xp에서 용량을 크게하고 업로드 하니...
스크립트를 계속 실행하면 플래쉬 플레이어가 느려진다는 경고문이 계속 뜨네요
지우(218.155.158.158) 2008-06-30 20:43:57
//지니
대용량에 따른 플래시 경고는 플래시 자체적인 문제라 어찌 할 수가 없습니다.
플래시 제작사인 매크로미디어에 문의하는 수 밖에는..
대용량일땐 다른 방법을 강구하시는게 좋겠습니다.
어려워요(58.124.83.206) 2008-07-16 05:33:41
알려주신대로 해서 실행하면.... 결과에 POST값만 나오고 FILE로 시작하는 파일정보3가지가 출력이 안되네요... 이게 출력이 안된거라면 무슨문제인가요??... 오래 붙잡고 있지만.. 답이 안나오네요.... 상대경로로도 해보았고, 절대경로도 해보았고 파일 퍼미션도 확인했습니다
gmrgus(211.35.72.130) 2008-08-14 16:28:33
이거..
2Mb 이상은 업로드가 안되네요. 경고창도 안뜨고..
혹시 어디부분을 건드려줘야 하는지 알수있을까요??
gmrgus(211.35.72.130) 2008-08-14 16:30:20
데모페이지에는 잘 업로드가 되는군요.;;;
gmrgus(211.35.72.130) 2008-08-14 16:43:35
index.php , swf_upload.js, upload.php  의 문서인코딩형식을 UTF-8 로 하고 실행을 하면 그렇게 되는거 같습니다.
shaejar(211.63.209.169) 2008-08-20 11:43:15
저도 윗분과 같은현상 입니다. 2Mb이상은 업로드가 안되네요. 에러가 나는것도 아니고
윗분은 해결을 하신건지요...
shaejar(211.63.209.169) 2008-08-20 16:40:19
죄송합니다. 잘 알아보지도 않고 위의 글을 남겼네요.
php.ini의 upload_max_filesize는 확인도 안해보고서 이런글을 남겨
너무 죄송합니다.
홍길동(125.188.29.53) 2008-09-03 15:15:00
멀티업로드에 btnUp, btnDown 추가 후 파일순서를 변경하고 싶은데 액션 이벤트가 먹히질 않네요. 어떤식으로 접근해야 할지요. 플래시 초보라 ㅠ.ㅠ
초두리(210.94.41.89) 2008-09-30 13:26:38
아래 별표한 경고창이 없으면 제대로 안넘어가고 도중에 끝어지는 현상이 발행하네요.\
예를 들면 40개를 넘기는데 3~4개 밖에 안 올라가는 현상이 자주 생김니다.
저랑 같은 에러 고치신분 계신가요?

    function callSwfUpload(){ //플래쉬 파일 리스트에 추가된 파일을 전송
        arrMovie = new Array()
        var arr_num = 0;
        var objectTags = document.getElementsByTagName('object');
        var movie;
        for (i = 0; i < objectTags.length; i++ ) {       
            if(objectTags[i].getAttribute("method")=="single_upload" || objectTags[i].getAttribute("method")=="multi_upload"){
                if(document.getElementsByName(objectTags[i].getAttribute("id"))[0]) {
                    movie = document.getElementsByName(objectTags[i].getAttribute("id"))[0];
                }else{
                    movie = document.getElementById(objectTags[i].getAttribute("id"));
                }           
                if(movie.GetVariable("totalSize")>0){               
                    arrMovie[arr_num] = movie;
                    arr_num++;
                }
            }       
        }

        if(arrMovie.length>0){
            if(arrMovie[0].getAttribute("method")=="single_upload" || arrMovie[0].parentNode.getAttribute("method")=="single_upload") arrMovie[0].height = 70;
            if(arrMovie[0].getAttribute("method")=="multi_upload" || arrMovie[0].parentNode.getAttribute("method")=="multi_upload") arrMovie[0].height = parseInt(20*arrMovie[0].GetVariable("listRows")+25+45,10);
            arrMovie[0].SetVariable( "startUpload", "" );
            arr_mov = 0;


            alert("선택하신 파일을 등록합니다.");  //★★

            document.forms['action_form'].submit();
        }else{
            document.forms['action_form'].submit();
        }       

    }
맥킨토시(210.117.57.162) 2008-10-17 06:50:29
안녕하세요.. 지우님 좋은 소스 공개해 주셔서 너무 고맙습니다.
올려주신 소스를 정말 귀하게 사용하고 있습니다.
그런데 윈도우에서는 IE , FF , SAFARI 모두 문제없이 작동하고 있으나 맥킨토시에서는 FF와 SAFARI 모두 문제가 있습니다.
맥킨토시에서 파일을 업로드하면 파일 1개만 올라가고 중단이 됩니다... 여러개의 파일을 동시에 업로드할때 첫번째 파일만 업로드되고는 프로그레스바가 멉춥니다.
디버깅끝에 맥킨토시에서는 파일업로드 후 swfUploadComplete() 가 호출되지 않는다는 것 까지는 알아냈으나 제가 액션스크립트를 다룰 줄도 모르고 플래쉬프로그램도 없어서 이렇게 조언을 구합니다.
맥킨토시에서는 왜 swfUploadComplete() 가 실행되지 않는 것일까요..
여하튼 10개의 파일을 업로드할 경우 정확히 1개만 올라가고는 멈춰버립니다.
윈도우용 safari 와 ff에서는 아주 잘 되는데 맥킨토시에서는 안되니 알길이 없어서요..
그럼.. 수고하세요.
배흙(59.22.141.139) 2008-10-23 14:00:05
지우 님이 좋은 업로더를 만들어주신 덕택에 잘 사용하고 있었습니다.
소스도 같이 있어서 조금 수정도 했구요.

그런데. 최근에
플래시 플레이어버젼 10이 배포 되면서 클라이언트에 버젼 에러가 발생하고 있습니다.
혹시 해결 방법이 있을까요???


아래는 비슷한 내용에 대한 게시글이네요.
http://blog.arzz.com/378

도움 부탁드리겠습니다.
지우(218.155.158.29) 2008-10-23 21:21:18
아직 플레시플레이어10을 접하지 못했는데..
정보 감사합니다.
조만간 설치해서 테스트 해보고..
가능한거지.. 가부를 결정해야겠네요.
다시한번 감사드립니다.
신민수(118.39.114.53) 2008-11-03 02:43:48
휴우 ~~ 벌써 2주째 계속 테스트를 하고 있네요.
처음 님이 공개하신 멀티업로더를 보고 아주 흥분했으며, 감탄하기 이를데가 없었는데요.

지금은 스을 지쳐갑니다.

정말 이상하네요. 여기 있는 소스를 다운로드 받아서 설치해 본게 벌써 12번이나 됩니다.
혹시나 내가 무엇을 잘못 받아서 그런건지 .. 하구요.

현재 fu.zip을 윈도xp(제 컴터)로 받아서 테스트서버(freebsd, APM 설치됨/머 리눅스랑 환경은 같다고 봐도 됩니다.)로 ftp로 업로드해서  테스트서버에서 unzip fu.zip 으로 풀었구요.

그렇게 해서 아무것도 손대지 않구요.
(아, 물론 files 폴더의 권한은 777로 바꾸어 놓았습니다.  즉, chmod -R 777 files로 .. )

일단 바로 테스트해 볼 심산으로 해당 url을 브라우저로 열었습니다.
이때 당연히 님의 파일업로드 예제 페이지 연것과 같이 열리구요.

거기서 제가 테스트를 바로 해 보았습니다.
다중 업로드를 사용해 볼 예정이라 바로 파일 3개를 선택하니 총 용량이 7M 정도 되더군요.
그런 후 작성완료를 클릭하니 하단에 프로그래스바가 표시되고 업로드 되는 모양이 나옵니다.

그런데, 그 과정이 끝난 다음에는 ...
-----------------------------------------------------
$_POST['subject'] = "플래시8을 이용한 업로드 테스트"
$_POST['name'] = "테스터"

[돌아가기]
-----------------------------------------------------
위와 같이만 나옵니다.


그런데, 님의 예제페이지에서는 업로드 과정이 끝나면 ...
-----------------------------------------------------
$_POST['subject'] = "플래시8을 이용한 업로드 테스트"
$_POST['name'] = "테스터"

$_FILES['smu03']['name'][0]: Baby Love - Supremes.mp3
$_FILES['smu03']['tmp_name'][0]: smu03__swfupload__Baby Love - Supremes.mp3
$_FILES['smu03']['size'][0]: 2526462

$_FILES['smu03']['name'][1]: Baby It\'s You - Smith.mp3
$_FILES['smu03']['tmp_name'][1]: smu03__swfupload__Baby It\'s You - Smith.mp3
$_FILES['smu03']['size'][1]: 3180151

$_FILES['smu03']['name'][2]: Baby I\'m Yours - Barbara Lewis.mp3
$_FILES['smu03']['tmp_name'][2]: smu03__swfupload__Baby I\'m Yours - Barbara Lewis.mp3
$_FILES['smu03']['size'][2]: 2360542


[돌아가기]
----------------------------------------------------
위와 같이 나오더군요.

현재 내용(원 소스)은 아무것도 수정하지 않은 원래 상태구요.

files 폴더와 그 안의 폴더 허가권은 모두 777로 되더군요.
그리고, 그 안 폴더에는 어떤 파일도 없습니다.

그리고, fu.zip을 열어본 파일에서 index.php에 35,41,47,49 란의
unlink 및 @rmdir 들은 원 소스자체에 주석처리되어 있네요.

하여간 fu.zip을 다운받아 그대로 압축풀고 바로 테스트한 상태인데요.

제가 볼때는 flash 까지만 제대로 동작이 되구요, 그 다음(upload.php)으로 넘어가야하는데
안 넘어가는 것 같아요.

위에 작성된 질문과 답변을 찬찬히 주욱 둘러보면서 계속적으로 테스트해 보았으나,
현재 도저히 어느 부분을 수정해야 할지를 알수가 없어서 질문을 드리니
바쁘시겠지만 모쪼록 답변을 꼭 좀 부탁드리겠습니다.
질문해요(221.138.85.114) 2008-11-04 00:53:40
신민수 //

index.php 파일의..

// 이전 쓰레기 파일 삭제
$folder_name = "./files/".session_id();
if(is_dir($folder_name)) {
    $dir_obj=opendir($folder_name);
    while(($file_str = readdir($dir_obj))!==false){
        if($file_str!="." && $file_str!=".."){
            @unlink($folder_name."/".$file_str);
        }
    }
    closedir($dir_obj);
    rmdir($folder_name);
}

이부분을 한번 주석처리 해보세요..
신민수(118.39.114.53) 2008-11-04 15:25:17
질문해요// 
답변에 감사드립니다.  그런데요.
그 내용은 이미 주석처리 해서 테스트 해 보았습니다.

또, 혹시나 해서 upload.php가 중간에 동작을 하기는 하는지 궁금해서 ..
upload.php 에다 ..


echo "upload.php가 동작됩니다.<br />";
echo "$_FILES['Filedata']['tmp_name']<br />";


이런 내용도 넣어서 debug(?)도 해 보았는데,, 일단 표시도 되지 않구요.
그리고, 해당 폴더(files,  chmod 777 되어 잇는 상태)내에 아무것도 생성되지 않습니다.

성공하신 님들은 어떻게 성공들을 하셨는지..  도움주시면 감사 !!


일단 저는 여기 있는 fu.zip을 그대로 가져와서요.
해당 테스트서버에 업로드한후 .. 쉘로 접속해서 ..
해당 테스트폴더에서 unzip fu.zip 을 했구요.

테스트하면서 위에서 제시한 index.php 파일의..

// 이전 쓰레기 파일 삭제
/*
$folder_name = "./files/".session_id();
if(is_dir($folder_name)) {
    $dir_obj=opendir($folder_name);
    while(($file_str = readdir($dir_obj))!==false){
        if($file_str!="." && $file_str!=".."){
            @unlink($folder_name."/".$file_str);
        }
    }
    closedir($dir_obj);
    rmdir($folder_name);
}
*/

이 부분만 주석처리한 상태입니다.  다른 건 하나도 변경하거나 건드리지 않았습니다.

아, 좀전에 테스트하기 위해 index.php의

<tr>
    <td align="center" bgcolor="#A9C0D0">파일업로드1<br>(그림파일)</td>
    <td>
        <script language="javascript">       
            makeSwfSingleUpload(           
    movie_id='smu01',
    flash_width='400',
    limit_size='10',
    file_type_name='그림파일',                 allow_filetype=' *.jpg *.jpeg *.gif *.png',                 deny_filetype='*.cgi *.pl',                 upload_exe='upload.php'
    );
      </script>
    </td>
</tr>

위와 같은 3개의 makeSwf [ Single|Multi ] Upload 에서
하단의 upload_exe='upload.php' 부분을 혹시나 해서 uploadx.php(실제 없는 파일)로
수정해 보니 결과는요

"네트워크 에러가 발생하였습니다. 관리자에게 문의하세요" 라는 메시지가 뜨더군요.

즉, upload.php를 불러들이기는 한다는 거지요.

지금 볼때,

index.php(-> swf_upload.js(-> single/multi_upload.swf)->upload.php)

이런 형태로 데이터가 전달되는 것 같은데 흐름이 맞나요 ??

즉, index.php에서 swf_upload.js가
single/multi_upload.swf를 불러서 화면을 표시하고
그 표시된 폼을 통해서 읽어들여진 파일들은 swf_upload.js가 swf를 통해서 화면을 표시할 때 불러들인 upload.php로 넘겨져서 폴더생성 및 이동등의 처리를 한 후 다시 index.php에서 cmd=exec 부분을 처리하게 되나요 ??


흠냐,, 어디에서 debugging 처리를 하면 전달되는 내용을 출력할 수 있을까요 ??
질문해요(221.138.85.114) 2008-11-05 23:54:27
네 저도 예전에 신민수님과 같이 테스트해보았는데 나오지 않았습니다.
아마 플래시에서 처리해서 안나오는거 같습니다..
하지만 정상적으로 작동합니다.
질문해요(221.138.85.114) 2008-11-06 22:03:45
플래시 플레이어10 해결은 의외로 간단합니다..
multi_upload.fla 파일을 여시고
version<8 부분을 찾으신후
version<8&&version!=1 로 고쳐주시면됩니다 ㅎㅎ..
정필우(211.36.188.10) 2008-12-16 04:43:04
아주 좋은 프로그램 공개해 주셔서 감사합니다.
우선 궁금한건 라이센스구요.
파일갯수 제한을 위해 제가 수정해도 괜찮은지요?

그리고 신민수님 혹시 파일 업로드 용량이 php.ini 에서 작게 설정되어 그런건 아닌지요?
저는 그게 의심되는데요.
김기범(58.120.47.147) 2009-01-06 12:00:57
안녕하세요
플래쉬 파일업로를 사용할려고 하는데요..
현재 소스로 업로드랑 다 잘됩니다
제가 다른서버에 올려야 될일있어요..
혼자 해결을 해볼려고 해도 플래쉬프로그램은 아예모르고 PHP도 초급자라서
염치불구하고 글을씁니다


ftp_put($ftp, $upload_img_name, $_FILES['Filedata']['tmp_name'], FTP_BINARY)

PHP  FTP 객체를 사용해서 파일을 업로드 할려는데요
FTP 객체를 사용해서 다른서버에 업로드까지 성공했습니다
기능 구현해서 쓰는데 크게 문제는 없습니다..

문제가 FTP 객체를 사용하다보니 업로드시 플래쉬의 프로그래스 바가 100%이후
스타트로 FTP 서버에 저장이 되더군요..
즉 거의 100%이후 한번더 100%의 시간이 더드는데

용량이 작은 파일은 업로드 시간이 별로 안되는 파일은 딜레이가 짧지만
100M정도 업로드에 사용되는데..  거의 100%걸리는시간만큼더걸리더군요


플래쉬 업로더 이용하는게 실시간 프로그래스 바를 이용한  유저들에게
홈페이지가 멈추지않았다고 인식하게 되도록 하기위해 쓴다고 생각합니다
그런데 100%에서 멈춰서 홈페이지가 멈춘것처럼보이게되버립니다
100% 이후 로 페이지를 꺼도 업로드는 됩니다

물론 다른서버가 아니라면 100%에 정확히 업로드가 완료가 됩니다

요점은
다른서버에 파일을 업로드합니다 (다른서버는 미디어서버 이며 php,아파치가 안깔려있음)
플래쉬의 프로그래스바가 100% 가 되었을때 다른서버로 파일 업로드가 완료가 되야합니다

이왕이면 PHP 로 해결을 보고 싶습니다

글재주가 없어 두서없이 같은말을 반복한것같아 죄송합니다

그냥 힌트 라도 좋습니다  도와 주세요 ^^;
김민준(121.174.86.118) 2009-01-12 13:14:34
안녕하세요?

업로드는 정상적으로 이루어 지는데..

플래쉬 버전이 8.0 이상인지 확인하세요.\n이미 설치하신 경우는 브라우저를 전부 닫고 다시 시작하세요.

이에러가 계속 뜨네요 왜 그런지 좀 알려주시면 감사하겠습니다.

늦었지만 새해복 많이 받으세요
지우(ziwoo) 2009-02-01 01:06:37
//김민준
위 댓글중에 질문해요 님이 작성하신 해결책이 있습니다.
Neighbor(59.9.227.94) 2009-02-02 21:41:15
파일을 업로드하면 files 폴더내에 md5 값으로 올라가던데 원래 파일명으로 못바꾸나요?
Neighbor(59.9.227.94) 2009-02-02 22:05:09
그리고 신민수님처럼 파일이 안올라가네요..
그대로 압축 풀어서 사용했는데..
파일도 3개 집어넣으면 결과에선 2개만 나오고 10개 넣으면 아예 안나오고 이런 현상도
있다능...
지우(ziwoo) 2009-02-03 00:22:01
//Neighbor
$_FILES['smu01']['tmp_name'][$i] 을 $_FILES['smu01']['name'][$i]으로 저장하면
원래 이름으로 나옵니다.
두번째 질문 업로드 이상 문제는 PHP.INI 의 최대 업로드 크기, 시간 등을 조정하세요.
이정식(121.184.6.224) 2009-02-25 18:02:11
좋은 프로그램을 공개해 주셔서 감사합니다^^
잘 사용중인데 swf파일이 업로드가 안되더군요~
swf파일도 서버로 업로드 하려면 어찌해야 되는지...
부탁드려요^^
지우(59.4.222.149) 2009-02-28 07:50:23
//이정식
다운받은 파일 중 index 파일을 열어보시면 플래시 삽입하는 부분에서
설정할 수 있습니다. 주석이 달려있으니 찾기 쉬울겁니다. 
김기범(58.120.47.147) 2009-03-13 17:36:25
여기 파일을 동영상을 업로드 하는데 쓸려고 합니다
업로드 잘되고 한데 ...
찾기버튼 누른후  파일선택한후 그동영상의 시간을 구하고자 하는데요
파일선택후 그파일의 이름이랑 싸이즈를 구하더군요...
전체 경로를 가져오고자 플래쉬 소스를 열어&#48419;습니다 (태어나서 처음...)
이것저것 변수 있는거 다넣어서 자바스크립트로 alert()로  띄워보고 해도
도통 플래쉬에 대해 잘몰라서요  해결이 안됩니다
파일의 이름 싸이즈  구하듯이 시간을 구할수있음좋고요
아님 전체 경로 라도 자바스크립트로 넘겨 주면 됩니다

선택한파일을 미리본다는 개념인데요...

혹시 알수 없을까요? ^^;
지우(218.155.158.29) 2009-03-13 22:12:26
//김기범
현재로선 불가능한 아이디어로 생각됩니다.
박상태(211.47.235.39) 2009-04-20 14:49:47
도와주세요.파일올리다 에러나면 전에 파일을 가지고 있다가 성공적으로 업로드되면
db에 전에 에러나서 못올라간 파일도 다시 올립니다.3개올리다 에러나서 2개 올리면 5개 올라갑니다.jsp버전이고요.
지우(ziwoo) 2009-04-20 16:26:33
//박상태
업로드 전에 우선 이전의 쓰레기 파일을 삭제하도록 코딩하세요.
예제에도 그런부분이 있습니다.
박상태(211.47.235.39) 2009-04-20 16:39:27
예제가 php라 모르겠읍니다.
밀알을꿈꾸는이(115.139.114.191) 2009-04-21 00:30:44
아무리 고민해도 모르겠어요.. 답글 부탁드립니다.
우선 멋진 소스를 공개해 주심을 감사드립니다. 제가 찾던 소스였는데.. 유용하게 사용하도록 하겠습니다. 다만, 제가 실력이 미진하다 보니 스스로 찾을 수 없는 내용이 있어 며칠밤 고생하며 찾다가 질문 남깁니다.

(한글)파일명으로 저장하게 되어 있는 업로드 소스를 파일명을 DB의 primery Key 값으로 변형시켜서 저장하려고 합니다.(일반적인 저장 방법으로 알고 있어요..) 이때, 파일명을 추출하는 코딩을 모르겠네요.. index.php 파일에 있는 for 문 안의 echo $_FILES['smu02']['name'][$i]."<br>"; 으로 찍어보지만 나타나지 않습니다.
또, count($_FILES['smu03']['tmp_name'])로 첨부파일수를 구하려고 하는데.. 안되네요.. 파일명과 확장자를 구하는 방법을 부탁드립니다.
지우(ziwoo) 2009-04-21 00:56:14
//밀알을꿈꾸는이
기본세팅 후 예제 index.php의 두번째 업로드 폼에 파일을 업로드 한다면..
echo $_FILES['smu02']['name'][$i]."<br>"; 로 찍혀야 정상입니다.
차근차근 다시 설치해보세요.
간혹 PHP 세팅에 따라 $_FILES 같은 단축형 변수를 인식못하는 서버가 있을 수 있습니다.
$HTTP_POST_FILES 로도 해보세요.
count 하는 방법도 맞게 하셨고요..
확장자 추출은...strrchr()를 이용하세요.
echo strrchr( "test.jpg" , "." );  // 결과 : ".jpg"
박상태(211.47.235.39) 2009-04-21 13:08:02
댓글에 달리신대로 해도 플래쉬8버전 에러는 나구요.여기 테스트페이지에서도 나더군요..fla수정해도 마찬가지입니다.
지우(ziwoo) 2009-04-21 13:37:30
테스트 페이지 버전에러 나던것를 어젯밤에 수정해서 다시 업로드했습니다.
현재는 버전ㅇ러는 나지 않고있습니다.
박상태(211.47.235.39) 2009-04-21 17:34:02
아 그럼 다시 받으면 되는건가요?
박상태(211.47.235.39) 2009-04-22 09:38:45
감사합니다.새버전받아서 되었읍니다.근데 스크롤을 내리면 파일첨부박스플래쉬가 잠시 사라졌다가 나오는데 이건 원래 그런건가요?
박상태(recyon) 2009-04-27 18:07:05
플래쉬가 스크롤바 내리면 이그러집니다.이런경우는 어찌 해야하는지요?
김선용(mnchkim) 2009-04-28 13:23:28
우선 좋은 소스 감사드립니다.

저는 jsp로 변환하여 사용하길 원하는데
혹시 request로  파일명을 받을수 가 있나요?
박상태(211.47.235.39) 2009-04-28 15:41:55
잘받아집니다.
이진석(58.227.22.57) 2009-05-28 11:36:30
찾고 있었는데 여기서 찾았네요 하지만.. php  ㅎㅎ;;

java, jsp로 바꿔서 정말~~~ 잘 쓰고 있습니다 

감사합니다.~
박종택(121.169.217.136) 2009-09-04 08:57:24
중복 파일 제어가 있으면 좋을거 같습니다.ㅋ;;
(121.169.217.136) 2009-09-07 01:38:00
드래그로 파일을 추가하는 기능은 넣을 생각이 있으신지? ㅋ
박종택(121.169.217.136) 2009-09-07 01:38:15
아무튼 아주 잘 쓰고 있습니다.
지우(218.155.158.29) 2009-09-07 18:06:33
드래그는 제 능력 밖 입니다..
그리고 정작 전 이걸 안쓰고 있어요...^^
김재겸(121.188.126.118) 2009-10-06 19:04:51
너무좋아요. 잘사용하겠습니다. 정말 대단해요.
자바초보(122.199.220.199) 2009-11-03 17:49:44
이진석님...
java, jsp 버전 꼭 올려주세요~~~
성대경(ohdosima) 2010-05-20 11:28:45
안녕하세요 플래시랑 jsp와 연동하여 꼭 사용해보고싶은데요..

아직 초보라 어떻게 해야할지 감이안잡히네요..

이진석님 혹시 도움좀 부탁드려도 될까요
지우(ziwoo) 2010-05-21 01:32:11
//성대경
네이버에서 "지우 플래시업로드 JSP"로 검색하시면 어렵지 않게 찾을 수 있습니다.
http://cafe.naver.com/javacircle.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=28453%26sc=e0d4321208452c9e0f%26query=JSP+%C1%F8%C7%E0%B9%D9%26clubid=10153147
쌈닭(ciee) 2012-01-04 12:26:50
지우님..
12/9일 배포하신거 보면 multi upload swf 파일에 전송관련 정보 표시하는 Box가 하단에
2개 있던데 이거 삭제 못하나요?(아니면 삭제하고 올려주시면 많은 도움이 될 거 같습니다)
초보라 다 구현된거 쓰는것도 어렵네요. 하여간 좋은자료 공유해 주셔서 감사드립니다.
지우(ziwoo) 2012-01-04 15:17:33
//쌈닭님
좋은 지적을 해주셨습니다.
미처 생각하지 못했는데, 파일 갯수를 늘리면 그게 보이는군요.. ^^
오늘 다시 올린 파일을 다운받으세요. 감사합니다.
심재갑(ciee) 2012-01-04 16:58:22
빠른 응답 감사드립니다. 통장이 넘쳐나는 한해되기리 바랍니다. ^^
심재갑(ciee) 2012-01-10 08:11:01
지우님..
작년 12/9일 배포한 자료에서는 이상이 없는데 올해(2012) 1/4일날 올료주신 자료에서는
900MB이상만 되어도 오류 발생하면서 업로드가 안되네요.
메일로 화면캡쳐한 자료 보내드립니다. 확인요청 드립니다.
지우(ziwoo) 2012-01-11 02:14:15
//심재갑 님
따로 변경한게 없이 일전에 말씀하신 텍스트상자만 위치를 변경한것이라..
12/9일자나 1/4일자가 다를 수가 없는 상황입니다.
보내주신 에러화면은 어떤이유로든 업로드된 파일을 가져오지 못했을때 발생하는 에러입니다.
에러출력 부분은 index.php에 if($splitName){} 이런 IF문을 삽입해서 해결했습니다만,
문제의 본질은 에러문 출력이 아니라 업로드된 파일이 없다는것일텐데요..
혹시라도 플래시 프로그램 외적인 문제는 아닌지 확인해보시기 바랍니다.
이를테면 서버의 용량이라든지, 업로드제한이라든지, 등등이요.
index 파일 변경한건 다시 올렸습니다.
업로드 속도가 빠르지 못한지라 대용량 업로드는 아직 테스트를 못해봤습니다. 
심재갑(ciee) 2012-02-09 19:59:10
지우님..위 문제 해결되었습니다
일단 해결은 PHP Version을 5.2.17 => 5.3.8 로 upgrade하니 전혀 문제없이
잘 됩니다.(전혀 이거 문제라고 생각치 않았는데  Flash 한계인 2GB까지는
전혀 문제없이 잘 됩니다. 너무 좋네요)
하여간 좋은 프로그램 공개 감사합니다.

백광열(andpizza) 2012-03-13 14:32:56
지우님 올려주신 파일 2008년도 쯤에 받아서 아직 감사히 잘 쓰고 있습니다. 하지만 최근 크로스 브라우징 작업하다보니 세션 문제 때문에 session_id를 넘기는 작업도 추가 작업했는데 파일 업로드하면 파일이 전부 올라가지 않는 문제가 생겼습니다.
정확하게 말씀드리자면 로컬 APM셋업해서 테스트하면 문제가 없지만, 서버에 올려서 테스트하면 8개 올리면 4~6개 정도밖에 업로드 되지 않네요...이래저래 찾다가 다시 이곳에 와서 최신 파일로 올리니까 정상적으로 올라가서 해결했습니다.
다만, 제가 파일을 선택하자마자 파일 업로드하도록 수정한 플래시는 아직도 그런 상태네요....새로운 파일은 fla파일이 없어서 참고할 수가 없고...무엇이 잘못된건지 혹시 짚히는게 있으신지요?
안용태(c4muhak) 2012-07-05 22:51:23
지우님 플래시 업로드 잘 쓰고 있습니다.
현재 동영상 파일을 업로드 후 ffmpeg로 flv 파일로 변환 하는 작업을 하고 있습니다.
현재 flv 변환까지 진행 된 상태입니다.

문제는 플레쉬에서 업로드 후 서버에서 flv로 변환하는 시간이 걸립니다.
플레쉬 업로드 화면에서 flv 변환시 메시지 또는 팝업창을 띄워 flv로 컴파일 중입니다.
라는 메시지를 넣고 싶습니다.

가능 한지요?
플레쉬 원본은 공개가 불가능 한지요?
아니면 구매를 해야 되는 건가요?
지우(ziwoo) 2012-07-18 02:01:44
//안용태
서울생활을 정리하고 남해 펜션으로 온지가 꽤 되었습니다.
더구나 요즘은 성수기라 홈피도 오랫만에 확인합니다.
답변이 많이 늦었지만 플래시업로드와 flv변환사이에 자바스크립트만으로
해결이 될것같군요. 잘 안되시면 메인페이지 하단의 제 휴대폰으로
전화하셔도 됩니다.
번호 제목 이름 날짜 추천 조회
중요 플래시8을 이용한 파일업로드(프로그래스..[83]파일 지우 2007-08-21 610 65535
24 플래시업로드 사용시 수정페이지에서 이미.. 이수룡 2010-11-18 52 4577
23 Re: 플래시업로드 사용시 수정페이지에서.. 지우 2010-11-22 61 4662
22 IIS+PHP+MySql 환경에서 파일업로드 좀 도.. 박순정 2010-11-10 61 3890
21 Re: IIS+PHP+MySql 환경에서 파일업로드 좀.. 지우 2010-11-22 67 3987
20 문의 드립니다.[2] 김용훈 2010-04-28 71 3261
19 JSP 환경에서의 플래시 업로더 질문입니다.[1] 처리 2010-03-09 95 6168
18 친절한 답변 감사합니다~^^ 전병훈 2009-11-12 77 3473
17 플래시 업로더 질문이요... 아무도 답변을..[1] 김재겸 2009-10-30 79 3649
16 Re: 정말 방법이 없는건가요?[9] 최권진 2009-11-03 90 4911
15 플래시 업로더에 대해서 여쭙습니다. 전인식 2009-10-26 87 18375
14 Re: 플래시 업로더에 대해서 여쭙습니다.[3] 지우 2009-10-27 78 7488
13 지우님 플래시 업로드 관해 질문이요. 김재겸 2009-10-17 84 3170
12 플래시8을 이용한 업로드....[1] 최권진 2009-10-12 83 3335
11 지우님의 플래시 업로더에 대해서 여쭙습니..[5] 전인식 2009-10-07 83 6560
10 업로더에 관련해 질문하나 올립니다.[2] 전성환 2009-08-31 76 4997
9 안녕하세요.[1] 박상태 2009-06-01 73 2547
8 파일 업로드에 관하여 질문 좀 할께요...[1] 이진석 2009-05-29 81 2739
7 흑흑[2]파일 박상태 2009-05-08 71 2732
6 답변이 없으시군요.죄송하지만 이걸 테스트..[8] 박상태 2009-05-04 76 3432
[1][2]
제목 내용 이름  
ziwooboard v1.0
Contact Phone Number
Bank Account number
ns1.ziwoo.net (115.160.123.41)
ns2.ziwoo.net (115.160.123.41)
Naver BLOG : http://blog.ziwoo.net
Family Homepage : http://home.ziwoo.net
Copyright ⓒ 2006 By Ziwoo.net All right reserved. Administrator.ziwoonet@naver.com