아이폰,아이패드 무료 앱을 이용해 모바일 사파리에서 파일업로드 구현하기

Mobile & Mac?/util & app 2010. 10. 11. 17:03
IOS6부터는 가능해졌습니다~~~

아이폰, 아이패드는 <input type="file" /> 태그가 작동되지 않습니다.(안드로이드는 가능한데..;)

그래서 모바일 웹 페이지를 만들때 제일 큰 난관중 하나일것이라 생각됩니다.

약 일주일정도의 웹서핑 결과 외국에서 무료로 사파리 플러그인 형태로 앱을 찾았습니다.
변수전달, 파일 선택과 카메라촬영후 바로 전송까지 지원됩니다.(기부라도 해야겠습니다.ㅎ)

약간의 발견된 문제는 파일업로드되면서 문제 발생시 그냥 창이 닫힌다는거. 에러 내용등을 출력 안해주네요.
또 공식지원은 iOS3.1.2이상인데, 무슨 문제인지 구 버전에서 몇몇 기기는 계속 새창만 뜹니다. (KT 정발 아이폰3Gs입니다.)
혹시 원인이나 해결책 발견했다면 알려주세요~


정보입니다.
앱명 : Picup
링크 : http://picupapp.com/
iTunes : http://itunes.apple.com/us/app/picup/id354101378?mt=8
링크에서 필요한 js 파일을 다운 받으세요.



데모페이지입니다.
우선 iTunes에서 설치후 접속하세요~
아이폰이나, 아이패드에서만 접속하세요 : http://whatdo.net/picup/




실행 이미지입니다.
아이패드에서 캡쳐해서 큼직하네요.ㅋ

모바일에서 접속하면 첫페이지입니다

아이폰일경우 카메라 촬영후 전송이 있습니다.그리고 파일 선택도 같이..

파일선택화면

선택후 리턴되는 값들입니다.

여러개 선택후 덧붙인거죠.

글 내용은 적습니다.

전송후 파일 목록과 글 내용

실제 전송된 ftp 파일 목록



실행예제 소스입니다.전 jquery랑 같이 사용했습니다.
위의 홈페이지에서 picup.js 파일을 다운받으세요~
(단순예제이니 날코딩으로..ㅋ)


Trackbacks 0 : Comments 53
    이전 댓글 더보기
  1. 궁금이 2010.10.26 16:35 Modify/Delete Reply

    님은 천재 이십니다.

    오호 이제 되네요...ㅋㅋ 너무 감사합니다.

    마지막 한가지만 더 질문 할게요...

    <img src="http://www.ige.kr/up2/FileProcessingScripts/PHP/uploaded/201010/GetAttachment.jpg">

    이 화면같이 가끔 보면 화면이 겹쳐서 나오는 이유는 왜 그런건가요?

    • 우렁씨 2010.10.26 16:54 신고 Modify/Delete

      팝업이나 새창이 아니고 레이어로 이미지를 띄워서 그렇습니다.

      PC화면에서 보면 금방 느낌이 올꺼에요.

      잘되었다니 다행이네요. 즐프여~

  2. 김정근 2010.11.07 06:01 Modify/Delete Reply

    넘흐 어렵네요 ㅠㅠ

  3. 김정근 2010.11.07 06:04 Modify/Delete Reply

    이거 서버에도 뭔가 셋팅을 해야 되나요
    전 디자이너인데요 잘 몰라서요 ㅠㅠ
    근데 왜 전 한글이깨질까요;;

    사파리 들어가서
    코딩예제주신페이지를 넣구요
    계정에 폴더 만들고 절대경로 넣그요
    http://naver.com/picup/ 뭐 이런식으로요

    choose photo 클릭하면

    그 해당 어플로 접속이 됩니다. 화면이 전환되면서
    사진을 선택하고 나면

    continue
    retry

    나오는데요
    continue
    선택하면


    upload queue 라는
    리스트 형태에 쌓이게 되네요 ;;

    뭔가 다시 리턴이 되어야 되는건데 내용을쓰고 보내야 하는데 말이죠 ㅠㅠ

    • 우렁씨 2010.11.07 12:28 신고 Modify/Delete

      단지 첨부파일을 http 프로토콜로 넘기는 거라, 서버 세팅은 별로 할게 없습니다.

      세팅시
      'callbackURL' : escape('절대경로/picup/'),

      이 부분이 업로드 url과 같으면 됩니다.

      만약 업로드 url이 http://www.test.com/uploadForm.html 이라면
      'callbackURL' : escape('http://www.test.com/uploadForm.html'),

      이렇게 해주시면 업로드후 처리결과를 가지고 그 페이지로 되돌아 옵니다.
      그후 설명글을 같이 넘기면 되겠죠.

      이때 업로드된 파일명을 같이 넘겨야 설명과 파일명의 매칭이 이루어질것입니다.

      그리고 한글이 깨지는것은 UTF-8로 작업을 하셔야 합니다.
      대부분의 외산 앱들은 utf-8로 작업되어집니다.
      점차 우리도 utf-8로 작업을 하고 있는 추세이고요.

      만약 수신측이 euc-kr이라면 그쪽에서 utf-8로 변환을 하면 됩니다. 넘길때 escape해서 넘겨야 하고요.

      queue 에쌓이는건 그냥 냅두세요.ㅋ
      그것도 웹으로 보여지게 하고 그러는게 있는데, 그건 알아서..;;



      가까운 플머한테 도움을 구하는 것도 괜찮을듯 싶습니다 :)

      질문에 대답은 성실히 해드릴려고 하는데, 말보다는 소스를 올려주시는게 눈에 들어오니 그렇게 부탁드려요.

      html은 어차피 감추지 못하니 그냥 보여주세여~~ㅎ

  4. next9364 2010.12.01 11:30 Modify/Delete Reply

    아... 제가 그렇게 찾던 자료이긴한데...
    웹에디팅을 모르는 저한테는 완전 어렵네요... 솔직히 아무리봐도 전혀모르겠어요...ㅡㅜ

  5. next9364 2010.12.01 11:33 Modify/Delete Reply

    아~ 이게... 웹페이지를 만들때... 아이폰에서 "파일선택"을 작동하게 하는거군요...

    즉... 이미 만들어진페이지들의 비활성화된 "파일선택"을 활성화시키는게 아니군요... 아쉽...

    • 우렁씨 2010.12.01 11:46 신고 Modify/Delete

      개발자가 정한 "파일선택" 버튼을 활성화 시키는 것입니다.

      모든 사파리에 적용되는게 아니고 개발한 자신의 페이지에 한해서만 적용되죠 ^^

  6. 영화사랑 2011.02.14 16:54 Modify/Delete Reply

    파일의 변수값을 userfile1로..
    넘기는데...

    나중에 결과 페이지에 표시할때는...
    어떻게 해야 하는지요...

    폴더에 이미지 저장은 되는데요...


    저장한 후, 파일변수값을.. 어떤식으로 받아 오는지요..
    입력페이지로 돌아 올때..
    특정값을 갖고 오지 않나요..???

    • 우렁씨 2011.02.15 11:56 Modify/Delete

      Picup.callbackHandler = function(data){
      for(var key in data)
      $("#result").append(key + ":" +decodeURIComponent(unescape(data[key]))+"<br /><br />");

      $("#file_list").val($("#file_list").val() + unescape(data['serverResponse']) + "|");
      $("#imgList").append("<img src='"+unescape(data['thumbnailDataURL'])+"' /> ");

      }

      이부분이 업로드후 리턴되는 값의 처리 입니다.

      자세한 리턴 값을 알고 싶다면
      for(var key in data) 이부분을 print 해보시면 됩니다.^^

  7. 영화사랑 2011.02.17 13:17 Modify/Delete Reply

    정말 염치없이 계속 질문만 하네요...
    업로드를 하면 처음 업로드 한 값은 리턴이 안되네요..
    두번째 부터는 잘 되는데...
    그리고 입력된 후 파일필드 말고 기존에 다른 필드의 값이 입력된 상태라면
    업로드 후 돌아오면 사라지는데.. 유지하는 방법은 없는 거죠..??

    소스를 한번 보여 들리게요..
    <html>
    <head>
    <meta charset="euc-kr" />
    <title>테스트</title>
    <link rel="apple-touch-icon" href="iphone72.png"/>
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="viewport" content="initial-scale=2.3, user-scalable=no" />
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript" src="picup.js"></script>
    <script type="text/javascript">
    function su(){
    if($("#file_list").val() == ""){
    alert('파일 선택...');
    return false;
    }
    if($("#contents").val() == ""){
    alert('내용 입력...');
    $("#contents").focus();
    return false;
    }
    document.f.submit();
    }
    </script>
    </head>
    <body>


    <form name="f" action="up_ok1.php" method="post" enctype="multipart/form-data" id="formID">
    <input type="text" name="file_list" id="file_list" />
    <br /><br />
    <input type="file" name="userfile1" id="file_id" style="font-size:1.5em;"/>
    <br /><br />
    <textarea name="contents" id="contents" style="width:100%;height:100px;border:3px solid #ddd" placeholder="내용입력"></textarea>
    <br /><br />
    <button type="button" style="font-size:1.5em;" onclick="su();"> 전송 (Submit) </button>
    </form>

    <h3>
    <fieldset>
    <legend>방법</legend>
    <ol>
    <li><a href="http://itunes.apple.com/us/app/picup/id354101378?mt=8" target="_blank">Picup 플러그인 설치(iTunes)</a></li>
    <li>사진선택</li>
    <li>내용 입력후 전송 터치</li>
    <li>전송후 리턴되는 것 확인...</li>
    </ol>
    </fieldset>
    </h3>

    <div id="imgList"></div>
    <div id="result"></div>


    <script type="text/javascript">

    var currentParams = {
    'callbackURL' : escape('http://www.fittingmodel.com/m/up/upload.php'),
    'referrerName' : escape('test'),
    'referrerFavicon' : escape('iphone72.png'),
    'purpose' : escape('upload image file'),
    'debug' : 'true',
    'returnServerResponse' : 'true',
    //'imageFormat' : 'jpg',
    'postImageParam' : 'userfile1',
    'postURL' : escape('http://www.fittingmodel.com/m/up/up_ok.php'),
    'returnThumbnailDataURL' : 'true',
    'postValues' : escape('mode=input&contents2='+encodeURIComponent('안녕'))//이미지는 다른 변수랑 같이 전달.
    };


    window.onload=function(){

    Picup.convertFileInput(document.getElementById('file_id'), currentParams);//버튼 생성

    Picup.callbackHandler = function(data){
    for(var key in data)
    $("#result").append(key + ":" +decodeURIComponent(unescape(data[key]))+"<br /><br />");

    $("#file_list").val($("#file_list").val() + unescape(data['serverResponse']) + "|");
    $("#imgList").append("<img src='"+unescape(data['thumbnailDataURL'])+"' /> ");

    }
    }
    </script>
    </body>
    </html>

    • 우렁씨 2011.02.18 07:38 Modify/Delete

      소스상은 이상이 없는듯 한데요.

      제가 겪은 비슷한 증상이 있습니다.

      최신버전은 잘 되는데 불규칙하게 하위버전에서는 그런 증상이 발생하기도 하더군요.

      해결방법은 위에도 적었지만 저도 몰라요 ^^;;

      혹시 버전이 낮다면 os 버전을 올리고 테스트 해보시겠어요.

      별로 도움이 못되었네요;

  8. 행인 2011.04.29 16:25 Modify/Delete Reply

    지나가다가 염치 없이 =_=... 여쭙게 되네요 ㅠㅠ
    데이터는 다 제대로 찍히는거 같은데..
    serverResponse 이 부분만 공백으로 들어오네요
    ㅠ_ㅠ
    어느 부분을 체크해주면 좋을까요? 소스는 예제 올려주신거 그대로인데;;;;

    • 우렁씨 2011.05.25 07:24 신고 Modify/Delete

      답변이 많이 늦었네요.

      데이터가 제대로 찍힌다는게 파일은 업로드 되었다는 것인가요?

      serverResponse 는 서버측에서 echo 문 또는 출력을 일부러 시켜야 나오는 것입니다.

      아.. 언어타입은 utf-8입니다.
      이게 안맞아 안나올수도 있겠네요..

      upload부분의 스크립트를 올려주시면 도움이 될듯싶네요 ^^

  9. 김진수 2011.05.24 16:33 Modify/Delete Reply

    안녕하세요?
    포스팅하신 내용 잘 봤습니다.
    전 현재 ASP로 코딩중인데요, 혹시 upload.php 에서 file uploading 구현을 어떻게 하셨는지 알려주실 수 있는지요?
    upload.php 파일을 보내주시면 더욱 감사 하구요..

    제 메일은 jinsoo21c@gmail.com 입니다.

    감사합니다.

    • 우렁씨 2011.05.25 07:23 신고 Modify/Delete

      다른 웹플밍과 같습니다.

      위 댓글에도 써놓았듯이
      <input type="file" name="filedata" /> 에서 넘기고 이를 서버측에서 받는 스크립트를 작성하시면 됩니다.

      filedata 변수명으로 받아겠지요. 그리고 업로드가 되면 서버측에 저장된 파일명을 출력해주면 serverResponse 에 담겨져 오는데 이걸로 클라이언트측에 뿌려주시면 됩니다. ^^~

      --- 이부분밖에 없는데여 ㅎ --
      if(move_uploaded_file($_FILES['filedata']['tmp_name'], 'file/filename.jpg')===true){
      echo 'file/filename.jpg';
      }

  10. 진태 2011.09.05 21:09 Modify/Delete Reply

    예제 정말 감사합니다
    근데.. 이미지 업로드 완료 후, 폼에 나오는 섬네일 크기를 변경하려면 어떤 걸 수정해야 하나요?

    • 우렁씨 2011.09.06 07:52 신고 Modify/Delete

      썸네일의 실제 크기는 변경하는건 못 찾겠습니다..

      그냥 태그를 말씀하시는거라면
      callback 쪽에서
      $("#imgList").append("<img src='"+unescape(data['thumbnailDataURL'])+"' /> ");
      이 부분에서 width, height값 주시면 됩니다.ㅋ

  11. 정문숙 2011.09.06 10:33 Modify/Delete Reply

    질문드려요..

    사진을 고르고 리턴할때 사진정보값을 가져오잔하요

    선택한 사진은 작게 보이는데

    ServerResponse 값은 (null) 이에요

    원래 파일명이 나와야하는데요..

    • 우렁씨 2012.04.08 11:38 신고 Modify/Delete

      파일 업로드 되고 파일명을 echo문을 찍었는데, null이 나온다는 뜻인가요?

      혹시 아무문자나 echo 해보시겠어요?

  12. 제로보드4 2012.02.23 12:13 Modify/Delete Reply

    제로보드4와 연계하려면 어떻게 하면 좋을까요 ㅠㅠ CallbackURL을 어떻게 지정해야 할지 모르겠어요..

  13. 유지훈 2012.04.04 22:42 Modify/Delete Reply

    제가 그누보드 사용중입데여ㅠㅠ

    모바일싸이트에서 picup 으로 구현하려는데
    너무 한계가 옵니다.ㅠㅠㅠ
    도와주실수있나여?ㅠㅠ

    • 우렁씨 2012.04.05 13:59 신고 Modify/Delete

      어느 부분이 안되는지 알려주시면 아는대로 답해 드릴께요~ㅎ

      요즘 좀 바빠 바로 답변을 못 드릴수 있어요;;;

  14. 유지훈 2012.04.06 18:10 Modify/Delete Reply

    일단제가 그누보드 모바일을 사용중인데요

    picup.js 파일이 input 파일을 button 으로 바꾸어 주는걸로 알고있거든요?ㅠㅠ
    개별적인 페이지에서 불러왔을때는 버튼형태로 나오는데
    게시판 write에 적용하려면
    기존 input 이랑 같은 문으로 되있어서 그런지
    아이폰에서 마찬가지로 막히드라고요~

    일단 <div style="float:left; font-size:12px; color:#4f5053; line-height:45px;" id="gB_info"> <input type='file' class='ed' name='bf_file[]' title='파일 용량 <?=$upload_max_filesize?> 이하만 업로드 가능'></div>

    이게 기존 안드로이드에서만 업로드 가능한 파일 붑ㄴ인데요~
    input type 이 file 로이름이 같아서 그런건지 버튼으로 변환이 안되네요.ㅠㅠ
    제가 잘못 알고있는건진 몰라도 제이쿼리.js 도 첨부했고요~

    <form name="f" action="upload.php" method="post" enctype="multipart/form-data" id="formID">
    <input type="hidden" name="file_list" id="file_list" />
    <br /><br />

    <input type="file" name="filedata" id="file_id" style="font-size:1.5em;"/>

    이게 picup 설정부분 이잖아요?

    근데 변환이 버튼으로 안변합니다.ㅠㅠ

    그리고 upload.php 로 폼을 전송하잖아요?ㅠㅠ

    근데 upload.php에 뭘 적어서 올려야 할지 모르겠습니다.ㅠㅠ

    적용법좀 알려주세요.ㅠㅠㅠ
    간곡히 부탁드려요~ㅠㅠ

    • 우렁씨 2012.04.08 11:32 신고 Modify/Delete

      저 위의 언급한 앱 설치는 하신거죠?
      (설치가 필수 라서)

      upload.php 는 위의 댓글들 보시면 설명해놓았습니다.
      (참고 메뉴얼 : http://kr2.php.net/manual/en/reserved.variables.files.php)

      페이지 전체 어느 한부분이 오류가 나서 안될수 있으니 페이지링크를 같이 보여주시는게 좀더 확실할거 같네요 ㅎ

    • 유지훈 2012.04.08 11:46 Modify/Delete

      자세히 얘기하고 싶습니다^^
      혹시 메일좀 알려주실수있나요?

    • 우렁씨 2012.04.08 13:27 신고 Modify/Delete

      currentParams 의

      picup에서 사진을 찍거나 파일을 선택하면
      'postURL' : escape('http://www.djjc.kr/new/prog/m/skin/board/cb/picup/upload.php'), 여기로 이동하면서 파일을 저장합니다.

      그리고, callbackURL이 업로드가 완료되면 돌아올 링크입니다.

      지금 샘플페이지에서 보니 돌아오긴 잘 돌아오는거 보니 postURL쪽에서 파일 업로드하는 소스작성이 미흡한듯 하는데...

      업로드 소스쪽이 move_uploaded_file($_FILES['tmp_name'], '/home/경로/파일명.jpg') 이런식이 기본입니다.
      뭐 서버설정또는 코딩 습관에 따라 달라질수 있지만서도...

      ============
      move_uploaded_file($_FILES['tmp_name'], '/home/경로/파일명.jpg'); //저장
      echo 'http://domain.com/경로/파일명.jpg'; // 업로드된후 출력해주면 됩니다. http://domain.com의 경우 같은 도메인일 경우는 안해줘도 되지만..

      설명이 극 초보 기준으로 해드렸는데, 혹시 이렇게 하셨는데도 안된다면 upload.php쪽 소스를 보여주세요. 링크도 좋고요..


    • 우렁씨 2012.04.08 14:20 신고 Modify/Delete

      파일명이나 이런건 알아서 하시고, 틀린곳만 잡으면,
      move_uploaded_file($_FILES['tmp_name'],'http://www.djjc.kr/new/prog/m/skin/board/cb/picup/uploaded/test.jpg');

      ->move_uploaded_file($_FILES['filedata']['tmp_name'],'/home/경로/test.jpg');

      위에선 제가 예제를 잘못드렸네요. ($_FILES['filedata']['tmp_name'])
      2번째인자엔 http://가 아니라 서버 기준으로 생각할때 경로입니다. (예) /home/test/public_html/new/prog/m/skin/board/cb/picup/uploaded/test.jpg 이런식의 경로 입니다.

      웹서버안에 저장한다면 $_SERVER['DOCUMENT_ROOT'].'/new/prog/m/skin/board/cb/picup/uploaded/test.jpg'; 이 정도 되겠네요.

      음... 일전에 알려드린 move_upload_file 의 메뉴얼을 보신후 작업하는게 도움이 될것입니다.

      서운하실수 있겠지만, 오류나 어려운것이 아닌 기본함수 부분에서 막히는 것까지 설명해 드리려야 하는것이 몇달만의 여유로운 휴일에 도움을 준다는 보람보단 뺏기는 기분이네요;;;

    • 우렁씨 2012.04.08 15:02 신고 Modify/Delete

      에러 내용처럼 basename의 파라미터로 string 형태로 들어가야한다는 것입니다. $_FILES['filedata']는 array형입니다.

      $_FILES['filedata']['tmp_name']으로 하시고, move_uploaded_file 의 첫 파라미터도 $_FILES['filedata']['tmp_name'] 로 하시면 됩니다.

      바로 위의 답댓글 좀 더 찬찬히 보시는게 좋을거 같네요..
      지금 적어주신 소스에 오타가 있으니 오류가 더 있을것입니다.

      덧으로,
      $_FILES['filedata'] 는 tmp_name, size, name, error등의 배열 집단입니다.

      죄송할 거 까지는 없지만 부족하지만 제 경험상 메뉴얼(php.net)보다 좋은 책을 없더래요 ㅎ

    • 유지훈 2012.04.08 18:51 Modify/Delete

      <title> 사진업로드</title>
      <?
      $ch_file = $y.$m.$d."iphone".md5(basename($_FILES['filedata']['tmp_name'])).".jpg";
      $uploaddir = "/uploaded/".$y.$m."/";
      $uploadfile = $uploaddir . $ch_file;
      move_uploaded_file($_FILES['filedata']['tmp_name']

      ['DOCUMENT_ROOT'],'/public_htm/new/prog/m/skin/board/cb/picup/uploaded/test.jpg');
      ?>
      <img src="<?=$uploadfile?>">

      이렇게해서 오류는 안뜨는데
      엑박표시에 uploaded에도 파일저장이 안되는데 어디가 문제일까요?ㅋ

    • 우렁씨 2012.04.09 08:04 신고 Modify/Delete

      move_uploaded_file($_FILES['filedata']['tmp_name']

      ['DOCUMENT_ROOT'],'/public_htm/new/prog/m/skin/board/cb/picup/uploaded/test.jpg');

      -> move_uploaded_file($_FILES['filedata']['tmp_name'],
      $_SERVER['DOCUMENT_ROOT'].'/public_htm/new/prog/m/skin/board/cb/picup/uploaded/test.jpg');

      $_FILES['filedata']['tmp_name'] 뒤에 쉼표(,)가, DOCUMENT_ROOT는 $_SERVER 글로벌 변수에서 호출해야 하며, 이게 저장경로에 덧붙여 줘야 합니다. $_SERVER['DOCUMENT_ROOT']. 여기에 쉼표가 아니고 점(.)이 붙어야 합니다.

      경로는 임으로 한것이니 다시 한번 확인해 보시고요.

    • 유지훈 2012.04.10 17:59 Modify/Delete

      언어셋은 일단 급해서 못바꿔서 깨지실꺼에요~
      여기서 파일업로드후에 아래 표시는되는데
      이거 리턴되면서 어디에 업로드 된건가요?

    • 유지훈 2012.04.28 01:37 Modify/Delete

      님 다잘되요!
      완전 땡큐 감사해요

      근데~
      질문있어요.,ㅠㅠ

      사진저장은 잘되는데
      이걸 전송(Submit) 과 함께 보낼려니 머리가 복잡하네요

      게시판폼모양은 이렇습니다

      ---------------------------------------
      글쓰는 부분


      사진찾기 (픽업에서 버튼화시키는부분)

      전송(Submit)

      ------------------------------------------

      일단 업로드.php 를 통해 사진은 업로드가 되는데
      db 부분을 어떻게 전송해줘야될지
      업로드.php 에서 같이 게시판id와 사진번호를 줘야될지
      지금 상태는 업로드.php 를 거친후 다시 글쓰기화면으로 리턴됩니다

      최종적으로 전송할때 보낼수 밖에 없는것 같은데
      db전송부분을 어떻게 해야할지

      test_image라는 테이블에 저장이 됩니다.

      게시물wr_id 가저장되는 테이블은 g4_write_cb인데요

      <?
      include "./dbconfig.php";
      $bbsid = $_POST['wr_id'];

      if($_FILES[filedata][size] > 0){

      $path = "/new/prog/m/skin/board/cb/picup/uploaded/";

      //이부분을 잘 처리하셔야 합니다.
      //php에서는 절대경로, 즉 서버상의 절대 경로를 통하여 디렉토리를 지정합니다.
      //웹에서는 웹루트부터 시작이 되지만 서버상에서는 실제 경로를 지정해야 정상적으로 들어갑니다.

      $filename = date("YmdHis").".jpg";
      move_uploaded_file($_FILES['filedata']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$path.$filename);

      $query = "insert into test_image (bbsNo,path,filename) values ($bbsid, '$path','$filename')";

      if(mysql_query($query)) echo "성공";
      else echo "실패";
      }

      ?>

      업로드.php 파일입니다.ㅠ

  15. 정은미 2012.04.26 14:16 Modify/Delete Reply

    serverResponse가 나오질 않는데요.
    파일도 잘 업로드가 되고 썸네일도 잘 나오는데요...
    왜 serverResponse 값은 나오지 않는건지....ㅡㅡ
    위에 보닌깐 저와 비슷한분이 계시던데... 파일명을 echo 한다는게 어떤걸 말씀하시는건지...
    본래 페이지에 하는건지... uplode 되는곳에 말씀하는건지...
    ㅡㅡ
    picup에도.. 보닌깐.. serverResponse=파일명이 적혀 있지 않더라구요

    uplode페이지 입니다.
    $UserFileTempName=$_FILES[UserFile][tmp_name];
    $UserFileName=microtime().$_FILES[UserFile][name];

    $FileName=explode('.',$UserFileName);
    $FileExt=$FileName[sizeof($FileName)-1];

    .
    .
    .

    echo"
    <script>
    window.alert('$msg')
    history.go(-1)
    </script>";
    exit;
    }

    $FileDir="upfile/$bID/files";
    $PathAndName=$FileDir."/".$UserFileName;

    if(file_exists($PathAndName)){
    $msg = "동일한 이름을 가진 파일이 존재합니다";
    echo"
    <script>
    window.alert('$msg')
    history.go(-1)
    </script>";
    exit;
    }

    if(!move_uploaded_file($UserFileTempName,$PathAndName)){
    $msg = "파일 업로드에 실패했습니다";
    echo"
    <script>
    window.alert('$msg')
    history.go(-1)
    </script>";
    exit;
    }

    • 우렁씨 2012.05.21 20:46 신고 Modify/Delete

      소스에서 <script>~~</script> 가 아니고 echo $PathAndName; 해보면, serverResponse 에 나올것입니다.

      이미지 업로드는 아이폰 앱 내부에서 처리된것이기 때문에 페이지를 이동하거나 하지 않기 때문에 history.go 나 이런 스크립트는 필요가 없습니다.

      즐플하세여~

  16. 컴뮤니티 2012.05.12 10:56 Modify/Delete Reply

    Picup.callbackHandler = function(data){
    for(var key in data)
    $("#file_list").val($("#file_list").val() + unescape(data['serverResponse']) + "|");
    $("#imgList").append("<img src='"+unescape(data['thumbnailDataURL'])+"' /> ");

    }
    위에 내용에서 업로드 파일명을 변수로 받을려면 어떻게 해야합니까?

    • 우렁씨 2012.05.21 20:50 신고 Modify/Delete

      unescape(data['serverResponse']) 이게 업로드된 파일명 입니다.

      음... 아까운 시간내서 답변해주기 싫은 질문자 태도네요.

  17. 2012.05.18 22:36 Modify/Delete Reply

    비밀댓글입니다

  18. 처럼 2012.05.21 10:46 Modify/Delete Reply

    이 부분 작업의뢰합니다.
    작업비용에 대한 의견 주시면 일정 잡아 보겠습니다.
    ceo_art@hanmail.net
    감사합니다.

  19. 부탁합니다. 2012.05.24 18:00 Modify/Delete Reply

    picup 개발 중 인데..제가 이해하지 못하고 있는 부분이 있는 것 걑습니다.
    답변 꼭 부탁 드립니다.
    사진을 선택하고 난 후 업로드 정보를 picup 서버가 돌려 주는데..

    원리가 picup 서버에서 upload_ok 파일을 통하여서 파일을 업로드까지 해주고 파일명을 돌려 주는 것인지 아니면 임시로 파일을 picup 서버에 가지고 있다가 picup 서버의 업로드된 파일의 경로를 받아 다시 저장 하는 것인지 잘 모르겠네요.

    감사합니다..hslee0722@hanmail.net

    • 우렁씨 2012.05.25 17:05 신고 Modify/Delete

      picup을 제가 만든게 아니라 잘 모르겠지만, 대부분의 언어가 그렇듯 굳이 소켓을 이용할수 있는데 picup서버로 전달후 upload_ok로 전달하는건 비효율적이지 않나 싶습니다.

      그래서 바로 전달할거 같습니다~

      경로라면 업로드후 님이 플밍한 출력문을 그대로 받아옵니다.

  20. 부탁합니다. 2012.05.25 17:51 Modify/Delete Reply

    답변 감사드립니다.

    그러면 제가 upload_ok.php 에서는 원래 하던대로 파일을 업로드 하면 되는거죠?

    picup 서버가 file객체에 선택한 파일 정보를 넣어주는 역할을 했다고 보고 처리하면 될까요?

    즉 파일 업로드 전용 파일과 DB 데이터 저장 하는 파일 두개를 만들어야 하나요?
    아니면 upload_ok.php 하나로 모두 처리하면 될까요?

    감사합니다.


    • 우렁씨 2012.05.29 14:59 신고 Modify/Delete

      너무 어렵게 생각하시는데 html 의 form 태그로 보내는 것처럼 받으셔서 업로드 하면 됩니다.

      업로드후 출력문에 업로드된 경로와 파일명을 리턴해주고 지지고 뽂으시면 됩니다~

Write a comment