亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP根據文件類型驗證上傳和轉換文件

PHP根據文件類型驗證上傳和轉換文件

PHP
Helenr 2021-11-05 16:24:13
我必須按照以下代碼使用 php 上傳文件:<!DOCTYPE html><html><head>  <title>Upload your files</title></head><body>  <form enctype="multipart/form-data" action="upload.php" method="POST">    <p>Upload your file</p>    <input type="file" name="uploaded_file"></input><br />    <input type="submit" value="Upload"></input>  </form></body></html><?PHP  if(!empty($_FILES['uploaded_file']))  {    $path = "uploads/";    $path = $path . basename( $_FILES['uploaded_file']['name']);    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {      echo "The file ".  basename( $_FILES['uploaded_file']['name']).       " has been uploaded";    } else{        echo "There was an error uploading the file, please try again!";    }  }?>它的工作原理,但很好,我的問題是如何添加/實現基于文件類型的安全驗證并轉換文件?所有圖像文件應轉換為jpg 類型,所有視頻文件應轉換為mp4 類型。在上傳過程中,我還應該randon()為文件添加名稱。重要提示:驗證后,所有圖像都應轉到upload/images/,所有視頻都應轉到upload/videos/
查看完整描述

2 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

您可以使用$_FILES["file"]["type"]獲取上傳文件類型,但這可能不準確。您可以使用以下代碼來獲取文件類型。


$finfo = finfo_open(FILEINFO_MIME_TYPE);

$mime_type = finfo_file($finfo, $temp_name);

finfo_close($finfo);

然后你可以檢查是否$mime_type在類似的東西中,


'image/jpeg' => FILE_TYPE_JPG,

'image/jpg' => FILE_TYPE_JPG,

'image/png' => FILE_TYPE_PNG,

'image/gif' => FILE_TYPE_GIF,

'video/mp4' => FILE_TYPE_MP4,

'video/webm' => FILE_TYPE_WEBM,

從mimetype上傳的文件中,您可以過濾您想要的圖像和視頻并刪除不需要的文件。然后將圖像和視頻移動到不同的目錄。


要將視頻傳輸到 mp4,您可以使用 ffmpeg -i example.mov example.mp4


要將圖像傳輸到 jpg,您可以使用 convert 0000.png 0000.jpg


對于隨機名稱,您可以md5_file($file_name)用作文件名。


請注意,當您轉換視頻和圖像時,可能有更多參數ffmpeg和 imagemagickconvert需要調整。


查看完整回答
反對 回復 2021-11-05
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

您將必須編寫一個阻止原始文件類型的 switch 語句,然后使用多個庫將原始文件類型轉換為首選文件類型。


switch ($originalfiletype){

case '.png':

//Process image through a .png to .jpg library

break;

case '.pdf':

//Process image through a .pdf to .jpg library

break;

case '.webm':

//Process video through .webm to .mp4 library

break;

default:

echo "Your file type is not supported";

break;

}

這個過程非常不方便和乏味,但很遺憾,沒有其他辦法。PHP 沒有內置的庫可以轉換所有文件類型。


查看完整回答
反對 回復 2021-11-05
  • 2 回答
  • 0 關注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號