2016-11-23 1 views
3

PHP FTP 함수를 사용하여 파일을 업로드하는 것이 좋습니다. 파일이 너무 크지 않으면 잘 진행되고 있습니다. 그러나 파일 크기가 커지면 실패합니다.PHP FTP 모듈을 사용하여 청크로 파일을 업로드하는 방법은 무엇입니까?

그래서 FTP에 연결하고 파일을 청크로 업로드하는 코드 샘플이 필요합니다.

기존 코드.

$ftp_server = ftp_server; 
$ftp_user_name=ftp_user_name; 
$ftp_user_pass=ftp_user_pass; 
$file = $_FILES["file"]["tmp_name"]; 
$remote_file = 'uploads/'.$_GET['file_name']; 
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
ftp_pasv($conn_id, true); 
if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) echo "Success"; else echo "Error"; 
ftp_close($conn_id); 

업데이트

var uploader = new plupload.Uploader({ 
    runtimes : 'html5,flash,silverlight,html4', 
    browse_button : 'pickfiles', // you can pass an id... 
    container: document.getElementById('container'), // ... or DOM Element itself 
    url : 'upload.php', 
    flash_swf_url : '../js/Moxie.swf', 
    silverlight_xap_url : '../js/Moxie.xap', 

    filters : { 
     max_file_size : '1000mb', 
     mime_types: [ 
      {title : "Image files", extensions : "jpg,gif,png"}, 
      {title : "Video files", extensions : "mp4,wmv"} 
     ] 
    }, 

    init: { 
     PostInit: function() { 
      document.getElementById('filelist').innerHTML = ''; 

      document.getElementById('uploadfiles').onclick = function() { 
       uploader.start(); 
       return false; 
      }; 
     }, 

     FilesAdded: function(up, files) { 
      plupload.each(files, function(file) { 
       document.getElementById('filelist').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></div>'; 
      }); 
     }, 

     UploadProgress: function(up, file) { 
      document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>"; 
     }, 

     Error: function(up, err) { 
      document.getElementById('console').appendChild(document.createTextNode("\nError #" + err.code + ": " + err.message)); 
     } 
    } 
}); 

uploader.init(); 

오류가 발생하는 것은 Error

+0

정확히 무엇이 실패합니까? 덩어리로 업로드하는 것이 도움이된다고 생각하는 이유는 무엇입니까? –

+0

다시 초기화되는 HTTP 요청은 무엇입니까? 이것은 아마도 PHP 코드의 최대 실행 시간을 초과했기 때문일 것입니다. 왜 더 오래 설정하지 그래? –

+0

이미 72000으로 변경되었지만 도달하기 전에 재설정 중입니다. – AWE

답변

1

ftp_fput를 사용하여 FTP 서버에 파일을 분할하여 업로드합니다. 각 청크를 들어

:

  • 전화 모든 이미 업로드 덩어리의 길이로 설정 $startpos 인수 ftp_fput.
  • $handle의 경우 청크가있는 메모리 내 스트림을 사용하십시오.

대안 적으로 사용 file_put_contents :


또는, fopen (a와 모드)를 사용하기위한

  • FILE_APPEND 플래그
  • $data/FTP URL을 래퍼와 fwrite/fclose.

  • +0

    답장을 보내 주셔서 감사합니다. 나는 PHP가 좋지 않다. 샘플 예제를 줄 수 있습니까? 네가 괜찮다면. :) 뭔가 긴급합니다. 내 JS 코드를 업데이트했습니다. – AWE