使用PHP上传文件时遇到问题,但是有大小限制。我设置了上传的最大大小:5MB,但是当我上传超过5MB的文件时,仍然允许继续该过程,但文件没有上传,我怎么能解决问题所以如果有人上传了更多的话会有错误超过5MB。这是我的代码:
输入表格:
<form action="kegiatan_upload_tambah.php" method="post" enctype="multipart/form-data">
<div class="box-body">
<div class="form-group"><label>ID Kegiatan</label>
<input type="text" name="id_kgt" class="form-control">
</div>
<div class="form-group"><label>Nama Kegiatan</label>
<input type="text" name="nama_kgt" class="form-control">
</div>
<div class="form-group"><label>Keterangan</label>
<textarea name="ket" class="form-control"></textarea>
</div>
<div class="row">
<div class="col-xs-5"><label>Tanggal Mulai</label>
<input type="text" name="tg_mulai" id="tg_mulai" class="form-control" >
</div>
<div class="col-xs-5"><label>Tanggal Akhir</label>
<input type="text" name="tg_akhir" id="tg_akhir" class="form-control" >
</div>
</div>
<br/>
<div class="form-group"><label>Pilih File</label>
<input type="file" name="file" required>
</div>
</div></form>
PHP脚本:
$allowed_ext = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'rar', 'zip');
$file_name = $_FILES['file']['name']; // File adalah nama_kgt dari tombol input pada form
$file_ext = strtolower(end(explode('.', $file_name)));
$file_size = $_FILES['file']['size'];
$file_tmp = $_FILES['file']['tmp_name'];
$lokasi = 'file/kegiatan/'.$nama_kgt.'-'.$file_name;
if(in_array($file_ext, $allowed_ext) === true)
{
if($file_size > 5000000)
{
echo "<script>alert('ERROR: Max File only 5 Mb!');history.go(-1)</script>";
}
else
{
move_uploaded_file($file_tmp, $lokasi);
$sql = "INSERT INTO kegiatan (id_kgt,nama_kgt,ket,tg_mulai,tg_akhir,nm_pengirim,type,size,file,jamlog,buatlog)
VALUES('$id_kgt','$nama_kgt','$ket','$tg_mulai','$tg_akhir','{$_SESSION['nama']}','$file_ext','$file_size','$lokasi',now(),now() )";
任何帮助都会非常感激。
答案 0 :(得分:1)
立即尝试:
$file_exts = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'rar', 'zip');
$upload_exts = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "file/doc")
|| ($_FILES["file"]["type"] == "file/docx")
|| ($_FILES["file"]["type"] == "file/xls")
|| ($_FILES["file"]["type"] == "file/xlsx"))
|| ($_FILES["file"]["type"] == "file/ppt"))
|| ($_FILES["file"]["type"] == "file/pptx"))
|| ($_FILES["file"]["type"] == "file/pdf"))
|| ($_FILES["file"]["type"] == "file/rar"))
|| ($_FILES["file"]["type"] == "file/zip"))
&& ($_FILES["file"]["size"] < 5000000)
&& in_array($upload_exts, $file_exts))
{
if ($_FILES["file"]["error"] > 0)
{
header("Location:index.php?err=filepro1");
//echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
$tempupname = time().$_FILES["file"]["name"];
$imgpathtostore="files/".$tempupname;
$imgpathtostoreDB="files/".$tempupname;
//Query
}
}
else
{
echo "file err";
}
答案 1 :(得分:0)
尝试颠倒你的逻辑......
而不是说
if($file_size > 5000000)
{
//do something...
}
else
die("File cannot exceed 5MB in size");
说....
if($file_size <= 5000000)
{
//do something....
}
else
die("File cannot exceed 5MB in size");
另外,请确保您的表单标记具有属性method =&#34; POST&#34; ENCTYPE =&#34;多部分/格式数据&#34 ;.您可能还想在上传之前检查文件中是否存在错误。要做到这一点......
$file_error = $_FILES['file']['error'];
if($file_error === 0)
{
//upload file and do more cool things here....
}
希望这会有所帮助......