图片没有上传到文件夹(没有错误或警告)
Image doesn't upload to the folder (no error or warning)
我有一个 PHP 图片上传代码,它在 运行 代码后没有显示任何错误或警告,但它没有将图片上传到文件夹或什么都不做
php
<?php
if (isset($_FILES['files'])) {
$uploadedFiles = array();
foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
$errors = array();
$rand_name = microtime().microtime().time().microtime();
echo $rand_name;
$file_name = microtime().time();
$file_size = $_FILES['files']['size'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
$file_type = $_FILES['files']['type'][$key];
if($file_type == "image/gif"){
$sExt = ".gif";
} elseif($file_type == "image/jpeg" || $file_type == "image/pjpeg"){
$sExt = ".jpg";
} elseif($file_type == "image/png" || $file_type == "image/x-png"){
$sExt = ".png";
}
if (!in_array($sExt, array('.gif','.jpg','.png'))) {
$errors[] = "Image types alowed are (.gif, .jpg, .png) only!";
}
if ($file_size > 2097152000) {
$errors[] = 'File size must be less than 2 MB';
}
$desired_dir = "user_data/";
if (empty($errors)) {
if (is_dir($desired_dir) == false) {
mkdir("$desired_dir", 0700); // Create directory if it does not exist
}
if (move_uploaded_file($file_tmp, "$desired_dir/" . $file_name . $sExt)) {
$uploadedFiles[$key] = array($file_name . $sExt, 1);
} else {
echo "Couldn't upload file " . $_FILES['files']['name'][$key];
$uploadedFiles[$key] = array($_FILES['files']['name'][$key], 0);
}
} else {
print_r($errors);
}
}
foreach ($uploadedFiles as $key => $row) {
if (!empty($row[1])) {
$codestr = '$file' . ($key+1) . ' = $row[0];';
eval ($codestr);
} else {
$codestr = '$file' . ($key+1) . ' = NULL;';
eval ($codestr);
}
}
}
HTML
<form action="for.php" method="post" enctype="multipart/form-data">
Attachment(s): <input type="file" name="files[]" multiple id="files" class="hidde fileInpu"/>
<input type="submit" name="submit" value="Request">
我 运行 在 NetBeans 中使用 WampServer 编写此代码,但没有遇到任何错误。
这一行给我提出了问题:
$file_name = md5(uniqid("") . time());
这是函数还是拼写错误?
您绝不会使用 $_FILES['files']['error']
检查文件上传错误,请尝试从该错误数组中获取一些反馈。
另外 $file_size > 2097152000
太大了,因为 2Mb 文件实际上是 2097152
,请参阅 Don't allow > 2mb images。
如果你在 XHTML 你的 multiple
需要是 multiple = "multiple"
,你看起来像 XHTML 因为你的 HTML 元素结尾是 />
您需要检查 PHP 错误日志,看看出现了什么。请参阅 Where does PHP store the error log? (php5, apache, fastcgi, cpanel) 了解更多信息,如果您不确定 what/where 错误日志是什么。
我很确定以上几点之一可以解决您的问题。
我有一个 PHP 图片上传代码,它在 运行 代码后没有显示任何错误或警告,但它没有将图片上传到文件夹或什么都不做
php
<?php
if (isset($_FILES['files'])) {
$uploadedFiles = array();
foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name) {
$errors = array();
$rand_name = microtime().microtime().time().microtime();
echo $rand_name;
$file_name = microtime().time();
$file_size = $_FILES['files']['size'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
$file_type = $_FILES['files']['type'][$key];
if($file_type == "image/gif"){
$sExt = ".gif";
} elseif($file_type == "image/jpeg" || $file_type == "image/pjpeg"){
$sExt = ".jpg";
} elseif($file_type == "image/png" || $file_type == "image/x-png"){
$sExt = ".png";
}
if (!in_array($sExt, array('.gif','.jpg','.png'))) {
$errors[] = "Image types alowed are (.gif, .jpg, .png) only!";
}
if ($file_size > 2097152000) {
$errors[] = 'File size must be less than 2 MB';
}
$desired_dir = "user_data/";
if (empty($errors)) {
if (is_dir($desired_dir) == false) {
mkdir("$desired_dir", 0700); // Create directory if it does not exist
}
if (move_uploaded_file($file_tmp, "$desired_dir/" . $file_name . $sExt)) {
$uploadedFiles[$key] = array($file_name . $sExt, 1);
} else {
echo "Couldn't upload file " . $_FILES['files']['name'][$key];
$uploadedFiles[$key] = array($_FILES['files']['name'][$key], 0);
}
} else {
print_r($errors);
}
}
foreach ($uploadedFiles as $key => $row) {
if (!empty($row[1])) {
$codestr = '$file' . ($key+1) . ' = $row[0];';
eval ($codestr);
} else {
$codestr = '$file' . ($key+1) . ' = NULL;';
eval ($codestr);
}
}
}
HTML
<form action="for.php" method="post" enctype="multipart/form-data">
Attachment(s): <input type="file" name="files[]" multiple id="files" class="hidde fileInpu"/>
<input type="submit" name="submit" value="Request">
我 运行 在 NetBeans 中使用 WampServer 编写此代码,但没有遇到任何错误。
这一行给我提出了问题:
$file_name = md5(uniqid("") . time());
这是函数还是拼写错误?
您绝不会使用 $_FILES['files']['error']
检查文件上传错误,请尝试从该错误数组中获取一些反馈。
另外 $file_size > 2097152000
太大了,因为 2Mb 文件实际上是 2097152
,请参阅 Don't allow > 2mb images。
如果你在 XHTML 你的 multiple
需要是 multiple = "multiple"
,你看起来像 XHTML 因为你的 HTML 元素结尾是 />
您需要检查 PHP 错误日志,看看出现了什么。请参阅 Where does PHP store the error log? (php5, apache, fastcgi, cpanel) 了解更多信息,如果您不确定 what/where 错误日志是什么。
我很确定以上几点之一可以解决您的问题。