2013-03-12 3 views
0

AJAX 및 HTML5를 사용하여 클라이언트 컴퓨터에서 서버의 폴더로 파일 업로드를 처리하려고합니다.AJAX/HTML 5 파일 업로드

사용자가 컴퓨터에서 파일을 찾아 볼 수있는 지점에 있습니다. upload 버튼을 클릭하면 파일 업로드를 완료하는 데 필요한 스크립트를 실행한다고 가정합니다. upload.php 스크립트를 사용하여이 파일 업로드 기능의 기능을 계속 코딩하는 방법을 모르겠습니다.

제 질문은 서버의 폴더가 docs이라고 가정합니다. 사용자가 업로드 버튼을 클릭 한 후 사용자가 선택한 파일을 서버 docs 폴더로 다운로드하려면 어떻게해야합니까?

의견을 보내 주시면 감사하겠습니다.

미리 감사드립니다.

JQuery와

$.ajax({ 
     url: 'upload.php', //server script to process data 
     type: 'POST', 
     xhr: function() { // custom xhr 
      myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ // check if upload property exists 
       myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload 
      } 
      return myXhr; 
     }, 
     //Ajax events 
     success: function(data){ 
      alert("OK"); 
      $('body').html(data); 
     }, 
     // Form data 
     data: formData, 
     //Options to tell JQuery not to process data or worry about content-type 
     cache: false, 
     contentType: false, 
     processData: false 

    }); 

HTML

<form enctype="multipart/form-data"> 
    <input name="file" type="file" /> 
    <input type="button" value="Upload" /> 
    </form> 
    <progress></progress> 
+0

후 다음을 추가하십시오이 나에게 무리 도움 : http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/ –

+1

I 너무 오래 전에 당신과 비슷한 문제를 겪었습니다. 그러나, 나는 정말 그것을 망쳐 놓고 싶지 않았기 때문에, 나는이 확장을 사용했다. https://github.com/blueimp/jQuery-File-Upload 작고 설정이 쉽고 설정하기 쉽다. 그냥 제안. – GJK

답변

2

는이 코드가 사용자의 설정에 작동합니다 생각합니다. 기본적으로 첫 번째 if 문에 무언가를 업로드하는지 확인합니다. 그런 다음 파일이 두 번째 명령문에 존재하는지 확인합니다. 그리고 그렇지 않으면 파일을 업로드 폴더로 이동합니다.

<?php 
if ($_FILES["file"]["name"] != NULL) { 
    if (file_exists("upload/" . $_FILES["file"]["name"])) 
    echo $_FILES["file"]["name"] . " already exists. "; 
    else 
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]); 
} 
?> 

.php 스크립트에 올바른 권한과 퍼포먼스를 요구합니다. 나는 766가 그것을해야한다고 생각한다.

또한 아약스에 오류를 추가해야합니다. 아약스 파일 업로드를 배울 때 당신의 성공

error : function(XMLHttpRequest, textStatus, errorThrown) { 
    console.log('An Ajax error was thrown.'); 
    console.log(XMLHttpRequest); 
    console.log(textStatus); 
    console.log(errorThrown); 
}, 
+0

답장을 보내 주셔서 감사합니다. 기본값이 아닌 755입니까? – AnchovyLegend

+0

if (isset ($ _ FILES [ "file"] [ "name"])) else는 알림을 생성 할 수 있습니다. – Sam

+0

폴더 및 파일에 대한 사용 권한은 766이어야하며 답변을 업데이트했습니다. 또한 php 파일의 기본 설정은 폴더의 경우 '644'와 '755'입니다. –

관련 문제