0

PHP WebページからmySQLデータベースに単純な.TXTファイルをアップロードしようとしています。したがって、次のクエリを使用して、mySQL サーバーにテーブルを作成しました。

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE IF NOT EXISTS `Files` (
  `ID` int(25) NOT NULL auto_increment,
  `Title` varchar(250) NOT NULL default '',
  `File_Name` varchar(250) NOT NULL default '',
  `File_Type` varchar(15) NOT NULL default '',
  `File_Size` varchar(45) NOT NULL default '',
  `File_Content` longblob NOT NULL,
  `File_Extension` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`ID`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

そして、私のupload.phpファイルは次のとおりです

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

$dbh = mysqli_connect("xxx.xx.xxx.xx","xxx","xxx","db") or die("There was a problem with the database connection.");

$acceptable_extensions[0] = "pdf";
$acceptable_extensions[1] = "jpg";
$acceptable_extensions[2] = "gif";
$acceptable_extensions[3] = "doc";
$acceptable_extensions[4] = "ppt";
$acceptable_extensions[5] = "xls";
$acceptable_extensions[6] = "xsl";
$acceptable_extensions[7] = "PDF";
$acceptable_extensions[8] = "JPG";
$acceptable_extensions[9] = "GIF";
$acceptable_extensions[10] = "DOC";
$acceptable_extensions[11] = "PPT";
$acceptable_extensions[12] = "XLS";
$acceptable_extensions[13] = "XSL";
$acceptable_extensions[14] = "txt";
$acceptable_extensions[15] = "TXT";



// Check the uploaded file to make sure it's a valid file

$validated = 1;

if($_FILES && $_FILES['file']['name']){

    //make sure the file has a valid file extension

    $file_info = pathinfo($_FILES['file']['name']);
    $acceptable_ext = 0;



    for($x = 0; $x < count($acceptable_extensions); $x++){

        if($file_info['extension'] == $acceptable_extensions[$x]){
            $acceptable_ext = 1;

        }
    }

    if(!$acceptable_ext){
        $validated = 0;
    }   
}else{
    $validated = 0;
}

//Now that we're sure we have a valid file, 
//we'll add it into the database

if($validated){

    $fileName = $_FILES['file']['name'];
    $tmpName  = $_FILES['file']['tmp_name'];//Nothing in tempName
    $fileSize = $_FILES['file']['size']; // fileSize 0
    $fileType = $_FILES['file']['type'];

    // Slurp the content of the file into a variable

    $fp = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);

    if(!get_magic_quotes_gpc()){
        $fileName = addslashes($fileName);
     }

    $file_info = pathinfo($_FILES['file']['name']);

    $sql = "INSERT INTO Files SET 
                Title = '".htmlentities(stripslashes($_POST['title']))."', 
                File_Name = '".$fileName."', 
                File_Type = '".$fileType."',
                File_Size = '".$fileSize."',
                File_Content = '".$content."',
                File_Extension = '".$file_info['extension']."'";


   // $result = mysqli_query($dbh,$sql);

    // If the query was successful, give success message

    if(!$result){
        echo "Could not add this file.";
         exit;
    } 
    else{
        echo  "New file successfully added.";
    }

}else{
    echo "Invalid file.";
    exit();
}
}
?>
<html>

<form action="upload.php" method="POST" enctype="multipart/form-data" name="upload_form" id="upload_form">
    <label>Title:</label><input name="title" type="text" id="title" value="<?=htmlentities(stripslashes($_POST['title']));?>" size="35">
    <label>File:</label><input type="file" name="file">    

<input type ="submit" value="submit">
</form>
<form action="download.php"  method="GET">
 <label>ID:</label><input type="number" name="id" />   <input type ="submit" value="download"/>
</form>
</html>

このリンクhttp://mirificampress.com/permalink/ Saving_a_file_into_mysqlで提供されているチュートリアルに従いました

コードは実行されていますが、テーブルを見たときここに画像の説明を入力

FileSize と File_Content は 0 です。

確認しました

if ($_FILES['file']['error'] > 0)
  {
  echo "Error: " . $_FILES['file']['error'] . "<br>";
  }

次に、エラーは 6 です。つまり、UPLOAD_ERR_NO_TMP_DIR ですが、これに対する解決策がわかりません。誰でもこの問題を解決するのを手伝ってくれませんか。どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1