2015-07-04 60 views
0

我正在開發一個功能的網站,用戶可以將他們的視頻上傳到網站並將視頻發送到服務器。它完美的工作沒有問題。但我想讓下面的代碼有所不同,當用戶上傳視頻時,它必須通過創建新文件夾目錄(名稱作爲用戶名)存儲到服務器中的新文件夾,並且我必須能夠通過服務器獲取它將視頻嵌入其各自的配置文件中。 下面的片段通常用於通過在服務器中創建上傳文件夾來上傳(上傳文件夾是手動創建的,我希望它以用戶上傳視頻時的方式直接創建新的視頻,必須在服務器中自主形成,名稱爲用戶名就可以了),請幫助.....使用PHP將視頻上傳到服務器

 video.php 
     ---------- 
     <form action="videophp.php" method="post" enctype="multipart/form-data"> 
     <label for="file"><span>Filename:</span></label> 
     <input type="file" name="file" id="file" /> 
     <br /> 
     <input type="submit" name="submit" value="Upload" /> 
     </form> 

     videophp.php 
     ------------- 
     <?php 

     $allowedExts = array("mp4", "flv","jpg","JPEG"); 
     $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); 

     if ((($_FILES["file"]["type"] == "video/mp4") 

     || ($_FILES["file"]["type"] == "video/flv") 
     || ($_FILES["file"]["type"] == "image/jpg") 
     || ($_FILES["file"]["type"] == "image/JPEG") 


     ) 

      && ($_FILES["file"]["size"] > 2000000) 
      && in_array($extension, $allowedExts)) 

     { 
      if ($_FILES["file"]["error"] > 0) 
     { 
      echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
      } 
      else 
     { 
      echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
      echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
      echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
      echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

     if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
     else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
     } 
     } 
     else 
      { 
      echo "Invalid file"; 
     } 
    ?> 

回答

1

這是你要尋找的一個部分:

$username = 'Max Mustermann'; // you'd have to get that from somewhere 
$targetfolder = 'upload/'.$username; 

if (!file_exists($targetfolder)) { 
    mkdir($targetfolder, 0777, true); 
} 
if (file_exists($targetfolder . $_FILES["file"]["name"])) { 
    echo $_FILES["file"]["name"] . " already exists. "; 
} 
else { 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
     $targetfolder . $_FILES["file"]["name"]); 

    echo "Stored in: " . $targetfolder . $_FILES["file"]["name"]; 
} 

你仍然需要用戶名發送到服務器。 有了這個,你也可以訪問他的下一次訪問。

但是 我建議給文件夾和文件其他名稱並將它們存儲在數據庫中,連接到用戶的數據。通過這種方式,您可以更好地控制哪些人可以訪問哪些文件(視頻),您不必搜索文件系統(搜索n db的速度更慢)。

+0

謝謝@Jeff我真的很喜歡這段代碼,也感謝你的幫助。 「你仍然需要發送一個用戶名到服務器上,你可以在下次訪問時訪問它。」這部分我沒有得到..你可以用不同的方式說出來嗎? – Sayuj3

+0

那麼,我正在使用一個變量'$ username',它沒有填充真實數據,因爲在你的例子中沒有發送給服務器的用戶名。我不知道你現在如何管理用戶會話。也許你正在使用cookies?或者一個php會話? – Jeff

+0

這段代碼並不是我想要的,我得到一個小錯誤,這是我錯誤的方式,我上傳的視頻必須進入創建的文件夾。我現在編輯了我的問題。 – Sayuj3

相關問題