作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 php 将文件上传到 mysql 时遇到问题。该脚本几乎适用于所有人,但它无法在几台机器上运行并抛出我为文件类型和文件大小设置的错误。
<?php
include ('config.php');
error_reporting(E_ALL);
session_start();
ini_set('max_execution_time', 300); //300 sec =5min
//csv file type check
$csv_mimetypes = array(
'text/csv',
'application/csv',
'text/comma-separated-values',
'application/excel',
'application/vnd.ms-excel',
'application/vnd.msexcel',
);
$msg="";
$maxsize = 2097152;
if (isset($_POST['submit'])) {
//Validate if csv file type as specified in array and check file size must not exceed 2MB
if ((in_array($_FILES['filename']['type'], $csv_mimetypes)) && ($_FILES['filename']['size'] < $maxsize)){
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['filename']['name'] . "</h1>";
}
$csv_file=$_FILES['filename']['tmp_name'];
$handle = fopen($csv_file, "r");
$i=0;
while (($data = fgetcsv($handle)) !== FALSE) {
if($i>0){
$import=mysql_query("insert statement");
}
$i=1;
}
$msg="Uploaded Successfully";
} else {
$msg="Something went wrong . Please check the file type and FileSize.";
}
}
?>
这个上传文件的脚本运行良好,但在上传时从几台机器上抛出错误“出了问题。请检查文件类型和文件大小。”
尽管它符合文件类型和文件大小文件大小。
最佳答案
您不应该找到更多案例来检查,您需要将它们分开。
if(in_array($_FILES['filename']['type'], $csv_mimetypes)) && ($_FILES['filename']['size'] < $maxsize)
{
// Success, yay for me!
}
else
{
// You have no idea what went wrong.
}
分离逻辑,即
$validType = in_array($_FILES['filename']['type'], $csv_mimetypes);
$validSize = $_FILES['filename']['size'] < $maxsize;
现在您可以具体检查出了什么问题。
if(!$validType)
{
$msg .= "The type is invalid.";
}
if(!$validSize)
{
$msg .= "The size is invalid.";
}
您应该考虑changing检查文件类型的方式,例如使用pathinfo :
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$validType = in_array($ext, $extensions);
其中 $extensions
是您预定义的数组。
无论出现什么问题,您都必须分离错误处理逻辑。
关于php - php 中的文件上传抛出文件类型和文件大小错误,尽管其在定义的规则内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28338940/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!