我正在尝试使用 php 上传 .mp4 文件,但它不起作用。这是脚本:
处理上传的 PHP 类:
类 CustomFileUpload {
public static function upload($data)
{
$errors = [];
$response = [];
$file = htmlentities(trim($data['file']['name']), ENT_QUOTES, 'UTF-8');
$tmpDir = $data['file']['tmp_name'];
$fileSize = $data['file']['size'];
$fileExt = strtolower(pathinfo($file,PATHINFO_EXTENSION));
$validExtensions = ['mp3', 'mp4'];
$uploadDir = '';
if ($fileExt == "mp4") {
$uploadDir = './public/ex-media/videos/';
} elseif ($fileExt == "mp3") {
$uploadDir = './public/ex-media/audios/';
} else {
$errors['msg'] = 'file type not allowed.';
$response['status'] = 407;
$response['msg'] = "error";
$response['error'] = $errors;
return $response;
}
if(!in_array($fileExt,$validExtensions))
{
$errors['msg'] = "Invalid extension detected for selected image file, please use a supported image extension.";
$errors['ext-detected'] = $fileExt;
}
if(empty($errors))
{
$uuid = explode("-", $data['uuid']);
$fileNewName = $uuid[0]."-".time().".".$fileExt;
var_dump($tmpDir);
exit();
$moved = move_uploaded_file($tmpDir, $uploadDir.$fileNewName);
if ($moved) {
$response['status'] = 200;
$response['msg'] = "success";
$response['fileUrl'] = $fileNewName;
echo('heres ur newly uploaded file - '.$fileNewName);
exit();
return $response;
} else {
$response['status'] = 502;
$response['msg'] = "failed";
$response['error'] = "upload failed for UNKNOWN reasons!";
echo('error while uploading file - go to CustomFileUpload.php');
exit();
return $response;
}
}
else {
$response['status'] = 407;
$response['msg'] = "error";
$response['error'] = $errors;
return $response;
}
}
}
调用 CustomFileUpload 类的 PHP 控制器操作:
public function uploadAction()
{
$response = ['status_code' => 404];
if ($this->getRequest()->isPost())
{
$data = $this->params()->fromPost();
$request = $this->getRequest();
$data = array_merge_recursive(
$request->getPost()->toArray(),
$request->getFiles()->toArray()
);
$fileUpload = CustomFileUpload::upload($data);
}
return new JsonModel($response);
}
如果我上传一个 mp3 文件,它可以完美运行,但对于 mp4,情况正好相反。因此,我尝试转储 tmp_dir 的内容,var_dump($tmpDir); exit();
如 CustomFileUpload 类所示。这样做之后,事实证明tmp_dir
mp4 文件是空的,而对于 mp3 文件则不是这样,如下面的屏幕截图所示(取自 Postman)。
mp3 文件的 tmp_dir 不是空的:
mp3 文件的 tmp_dir 为空:
请问,我该如何解决这些问题?