PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで500MBを超える大きなファイルをアップロードするにはどうすればよいですか?


大きなファイルは、PHPを使用して2つの方法でアップロードできます。両方について以下で説明します-

  • php.iniファイルのupload_max_filesize制限を変更する。
  • ファイルチャンクアップロードを実装することにより、アップロードが小さな部分に分割され、アップロードが完了したときにこれらの部分が組み立てられます。

php.iniファイルは以下のように更新できます-

upload_max_filesize = 50M
post_max_size = 50M
max_input_time = 300
max_execution_time = 300

サーバーや他のプロジェクトの設定も変更されるため、これは避ける必要があります。

htacessファイルの更新

php_value upload_max_filesize 50M
php_value post_max_size 50M
php_value max_input_time 300
php_value max_execution_time 300

インライン設定の変更-

<?php
   // changing the upload limits
   ini_set('upload_max_filesize', '50M');
   ini_set('post_max_size', '50M');
   ini_set('max_input_time', 300);
   ini_set('max_execution_time', 300);
   // destination folder is set
   $source = $_FILES["file-upload"]["tmp_name"];
   $destination = $_FILES["file-upload"]["name"];
   // uploaded folder is moved to the destination
   move_uploaded_file($source, $destination);
?>

チャンキング

このプロセスでは、大きなファイルが小さな部分に分割されてからアップロードされます。 「Plupload」ライブラリをダウンロードして使用できます。

<?php
   // the response function
   function verbose($ok=1,$info=""){
      // failure to upload throws 400 error
      if ($ok==0) { http_response_code(400); }
      die(json_encode(["ok"=>$ok, "info"=>$info]));
   }
   // invalid upload
   if (empty($_FILES) || $_FILES['file']['error']) {
      verbose(0, "Failed to move uploaded file.");
   }
   // upload destination
   $filePath = __DIR__ . DIRECTORY_SEPARATOR . "uploads";
   if (!file_exists($filePath)) {
      if (!mkdir($filePath, 0777, true)) {
         verbose(0, "Failed to create $filePath");
      }
   }
   $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : $_FILES["file"]["name"];
   $filePath = $filePath . DIRECTORY_SEPARATOR . $fileName;
   // dealing with the chunks
   $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
   $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
   $out = @fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
   if ($out) {
      $in = @fopen($_FILES['file']['tmp_name'], "rb");
      if ($in) {
         while ($buff = fread($in, 4096)) { fwrite($out, $buff); }
      } else {
         verbose(0, "Failed to open input stream");
      }
      @fclose($in);
      @fclose($out);
      @unlink($_FILES['file']['tmp_name']);
   } else {
      verbose(0, "Failed to open output stream");
   }
   // check if file was uploaded
   if (!$chunks || $chunk == $chunks - 1) {
      rename("{$filePath}.part", $filePath);
   }
   verbose(1, "Upload OK");
?>

サイズが500MBを超えるファイルをアップロードしようとすると、正常にアップロードされます。


  1. インターネット経由で大きなファイルを送信する方法

    近年、インターネット経由で大きなファイルを送信する機能は、多くのユーザーにとって不可欠になっています。この記事では、手間をかけずにインターネット経由で大きなファイルを転送する最も信頼できる方法を紹介します. 標準のメッセージング プラットフォーム (Gmail、Outlook など) では 25 MB を超えるファイルを送信できないため、インターネット経由で大きなファイルを送信するには別の方法を使用する必要があります。ここでは、インターネット経由で大きなファイルを安全に転送するために見つけた最も簡単な方法を選択しました. 大容量ファイルをインターネット経由で無料で送信/転送する方法 圧縮:

  2. WP-Config.php ファイルを保護する方法

    ハッカーの考え方から考えてみてください。何千もの Web サイトで使用されているプラ​​ットフォームに侵入したり、複数の Web サイトでプラットフォームを総当たり攻撃したりしませんか? WP-Scanner などのツールをオープンソースで利用できるようになったことで、アマチュアのスクリプト初心者でさえ、プロの WordPress Web サイトに侵入し、悪夢のような体験を引き起こす可能性があります。また、wp-config.php あなたのウェブサイトを作ったり壊したりすることができるワンストップファイルです.妥協させますか? wp 構成ファイルを保護するための手順を学びます WordP