簡體   English   中英

我收到未定義的索引tmp_name通知

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM