为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信