[英]I am getting an undefined index tmp_name notice
我正在嘗試將文件名插入“音頻”表的“音頻文件”列中。 問題是它一直給我一個未定義的索引錯誤:tmp_name第45行。這意味着當我嘗試插入文件名時,而不是執行以下操作:
音訊
AudioId (auto) AudioFile
1 AudioFiles/cat.png
2 AudioFiles/cat_2.png
3 AudioFiles/cat_3.png
它在下面執行此操作:
音訊
AudioId (auto) AudioFile
1 AudioFiles/_2.png
2 AudioFiles/_2.png
3 AudioFiles/_2.png
所以我的問題是為什么它找不到tmp名稱,因此在表中插入了不正確的文件名:
$result = 0;
if( file_exists("AudioFiles/".$_FILES['fileAudio']['name'])) {
$parts = explode(".",$_FILES['fileAudio']['name']);
$ext = array_pop($parts);
$base = implode(".",$parts);
$n = 2;
while( file_exists("AudioFiles/".$base."_".$n.".".$ext)) $n++;
$_FILES['fileAudio']['name'] = $base."_".$n.".".$ext;
move_uploaded_file($_FILES["fileAudio"]["tmp_name"], //line 45 notice appears
"AudioFiles/" . $_FILES["fileAudio"]["name"]);
$result = 1;
}
else
{
move_uploaded_file($_FILES["fileAudio"]["tmp_name"],
"AudioFiles/" . $_FILES["fileAudio"]["name"]);
$result = 1;
}
$audiosql = "INSERT INTO Audio (AudioFile)
VALUES (?)";
if (!$insert = $mysqli->prepare($audiosql)) {
// Handle errors with prepare operation here
}
//Dont pass data directly to bind_param store it in a variable
$insert->bind_param("s",$aud);
//Assign the variable
$aud = 'AudioFiles/'.$_FILES['fileAudio']['name'];
$insert->execute();
if ($insert->errno) {
// Handle query error here
}
$insert->close();
形式如下:
var $fileAudio = $("<form action='audioupload.php' method='post' enctype='multipart/form-data' target='upload_target_audio' onsubmit='return audioClickHandler(this);' class='audiouploadform' >" +
"<p class='audiof1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /><br/></p>" +
"<p class='audiof1_upload_form' align='center'><br/><span class='audiomsg'></span><label>" +
"Audio File: <input name='fileAudio' type='file' class='fileAudio' /></label><br/><br/><label class='audiolbl'>" +
"<input type='submit' name='submitAudioBtn' class='sbtnaudio' value='Upload' /></label>" +
"<iframe class='upload_target_audio' name='upload_target_audio' src='#' style='width:300px;height:300px;border:0px;solid;#fff;'></iframe></form>");
IT部門很難確定哪一行是45行,但是這里的經驗法則是,如果說未定義的索引確實是45行。 有兩個常見的原因:您試圖在索引名稱中輸入拼寫錯誤以嘗試讀取它,或者它根本不存在。 您可以通過使用print_r()
甚至var_dump()
輸出數組內容來輕松檢查存在哪些索引。 然后,您要么修正拼寫錯誤,要么嘗試找出為什么不在這里(如果確實是無條件的話)。 我還要檢查您的<FORM>
,看看您的<input type="file"... />
元素是否真正命名,其名稱為“ fileAudio”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.