2016-11-23 20 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サーバへのチャンクでファイルをアップロードします。すべて、すでにアップロードされたチャンクの長さに設定

  • コールftp_fput$startposと引数:各チャンクに対して

  • $handleの場合は、チャンクでメモリ内ストリームを使用します。

あるいは、使用file_put_contentsと:


あるいは、fopena付きモード)を使用するための

  • FILE_APPENDフラグ
  • $data/FTPのURLラッパーとfwrite/fclose

  • +0

    私はこれをPHPでうまくいきません。サンプルの例がありますか?あなたが気にしないのなら。 :)緊急のことがあります。 JSコードを更新しました。 – AWE

    関連する問題