私はこのアップロードスクリプトが失敗している理由を理解しようとしています。 HTMLのFORMを皮切りPHPアップロード14MBファイルが失敗する
:ここ
<form role="form" action="api/upload.php" method="post" enctype="multipart/form-data">
<input id="file" name="file" type="file" />
<input class="btn btn-primary" type="submit" value="Upload" />
</form>
は、PHPスクリプトです:
<?php
if(isset($_FILES['file'])){
$file = $_FILES['file'];
$target_file = basename($_FILES["file"]["name"]);
$file_name = $file['name'];
$file_tmp = $file['tmp_name'];
$file_size = $file['size'];
$file_error = $file['error'];
$file_ext = explode('.',$file_name);
$file_ext = strtolower(end($file_ext));
$allowed = array('txt', 'jpg', 'xlsx', 'pptx', 'docx', 'doc', 'xls', 'pdf');
if(in_array($file_ext, $allowed)){
if($file_error === 0){
if($file_size <= 99600000){ // this was set to 600000
$file_name_new = uniqid('', true) . '.' . $file_ext;
$file_destination = '../files/' . $file_name;
if(move_uploaded_file($file_tmp, $file_destination)){
header("Location: ../index.php");
die();
}
else{
echo "There was a problem uploading the file";
}
}
else{
echo "The file is too large";
}
}
else{
echo "There was an error uploading the file";
}
}
else{
echo "The file type is not allowed";
}
}
?>
のIFネストされたステートメントを許してください。私はyoutubeでこのビデオのオフになっていた:https://www.youtube.com/watch?v=PRCobMXhnyw
上記のコードは動作します。ファイルをアップロードすることができます。エラーが発生すると、適切なエラーメッセージが表示されます。
しかし...
私はアップロードされないファイルを見つけました。これは14MBの許可されたファイル、ワードドキュメントです。それが大きすぎるかどうかはわかりません。しかし、それでも私がアップロードしようとしたファイルが大きすぎると、file_sizeチェックを通過することはなく、対応するエラーメッセージが表示されます。
この場合、私はすべて空白の画面になります。私は最初のIF文の前後に 'hello'をエコーすることができますが、最初のIFの直後に失敗します。
なぜこれが起こっているのかわかりません。
エラーが表示された場合は、修正してください。
ありがとうございます。
'$ _FILES ['file'] ['error']'のコードを見てみましたか?ゼロでなければエラーメッセージを表示します – RiggsFolly
最初のIF文の後に何もエコーすることはできません。 $ file ['error']をチェックする別の方法はありますか? –
何かをエコーできないのはなぜ... – RiggsFolly