我想让我的用户以PNG和JPG以及JPEG文件类型上传图片。 所以我在我的html文件中使用这段代码:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="utf-8" />
<link href="assets/css/style.css" rel="stylesheet" />
<script type="text/javascript" src='jquery.min.js' ></script>
<script type="text/javascript">
//<![CDATA[
function upload_start(){
document.getElementById('upload-process').style.visibility = 'visible';
return true;
}
function upload_end(check_upload){
var server_response = '';
if (check_upload == 1){
server_response = '<span class="ok">File Uploaded<\/span>';
}
else {
server_response = '<span class="error">file Upload error<\/span>';
}
document.getElementById('upload-process').style.visibility = 'hidden';
document.getElementById('upload-form').innerHTML = server_response;
return true;
}
//]]>
</script>
</head>
<body>
<form action="php-ajax-upload.php" method="post" enctype="multipart/form-data" target="upload-target" onsubmit="upload_start();">
<label for="user-file"></label>
<input type="file" id="user-file" name="user-file" />
<input type="hidden" name="customer_id" value="6000" />
<input type="submit" value="Upload File" />
</form>
php-ajax-upload.php
内容为:
<html>
<head>
<link href="assets/css/style.css" rel="stylesheet" />
</head>
<body>
<?php
$customer_id = $_POST['customer_id'] ;
if ( ($_FILES["user-file"]["type"] == "image/jpeg" )|| ($_FILES["user-file"]["type"] == "image/jpg" )|| ($_FILES["user-file"]["type"] == "image/png" ) )
{
if ($_FILES["user-file"]["error"] > 0){
echo "<div class=\"server\">Error: " . $_FILES["user-file"]["error"] . "</div><br />";
$check_result = 0;
}
else{
if (file_exists("user-upload/" . $_FILES["user-file"]["name"])){
echo "<div class=\"server\">This file exists <br /><br />".$_FILES["user-file"]["name"]. "</div><br />";
$check_result = 0;
}
else{
if(isset($_POST['customer_id']) && !empty($_POST['customer_id']) )
{
$customer_id = trim($_POST['customer_id']);
$filename = basename($_FILES['user-file']['name']);
$format = pathinfo($filename, PATHINFO_EXTENSION);
$saved_file_name = $customer_id.'.'.$format ;
if(is_writable(dirname(__FILE__) . './admin-upload/'. $saved_file_name))
{
unlink(dirname(__FILE__) . './admin-upload/'. $saved_file_name );
}
if(is_writable(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpeg'))
{
unlink(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpeg' );
}
if(is_writable(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpg'))
{
unlink(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpg' );
}
if(is_writable(dirname(__FILE__) . './admin-upload/'.$customer_id.'.png'))
{
unlink(dirname(__FILE__) . './admin-upload/'.$customer_id.'.png' );
}
move_uploaded_file($_FILES["user-file"]["tmp_name"],"admin-upload/".$customer_id.'.'.$format ) ;
$check_result = 1;
}
else
{
echo 'Id not found !';
$check_result = 0;
}
}
}
}
else{
if($_FILES["user-file"]["size"] > 1000000){
echo "<div class='server red bold'>File is Large</div>";
}
else{
echo "<div class='server red bold'> File Type is not Valid !</div>";
}
$check_result = 0;
}
?>
<script type="text/javascript">
window.top.window.upload_end(<?php echo $check_result; ?>);
</script>
</body>
</html>
现在,当我想检查我的代码时,当我选择Imange时效果很好,当我选择其他文件类型时,例如:pdf,doc,srt,....代码运行良好并会说:
文件类型无效!
但只有当我选择mp3
文件时,php-ajax-upload.php
文件错误:
注意:未定义的索引:第7行的D:\ Software \ wamp \ www \ garanti \ php-ajax-upload.php中的customer_id
注意:未定义索引:用户文件 第9行的D:\ Software \ wamp \ www \ garanti \ php-ajax-upload.php
注意:未定义索引:用户文件 第9行的D:\ Software \ wamp \ www \ garanti \ php-ajax-upload.php
注意:未定义索引:用户文件 第9行的D:\ Software \ wamp \ www \ garanti \ php-ajax-upload.php
注意:未定义索引:用户文件 第64行的D:\ Software \ wamp \ www \ garanti \ php-ajax-upload.php
最后在页面末尾说:
文件类型无效!
我不知道为什么这个错误只会发生在mp3文件中?
答案 0 :(得分:1)
这听起来可能与你的一个php.ini设置有关。
我假设mp3
文件比您尝试成功上传的任何其他文件都要大。如果文件的大小大于php.ini
设置post_max_size
,那么PHP将从帖子中丢失数据,我认为这就是这里发生的事情。 mp3文件可能已经上传,但POST中的其他变量也会丢失。
检查post_max_size
,其默认值为3Meg,您可能需要增加它。请记住,它需要&gt; upload_max_filesize
以确保您不会丢失其他POST变量。