1

私の現在のコードでは、ファイルのファイル名を挿入するだけで、ファイルはフォルダーに保存されます。また、ファイルをmysqldatabaseに保存したいと思います。どうやってやるの。

私のテーブル:id file_name fcontent(longblob)

include 'db.php';
if(isset($_FILES['image'])){
    $errors= array();
    $tablename = "files";
    $file_name = $_FILES['image']['name'];
    $file_size =$_FILES['image']['size'];

    $file_tmp =$_FILES['image']['tmp_name'];
    $content =$_FILES['image']['fcontent']; // content in database

    $sql="INSERT INTO $tablename(file_name,content)VALUES('" . mysql_real_escape_string($file_name) . "')"; // here i need to insert the content i assume

    $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); //convert to lower

$extensions = array("jpeg","jpg","png","txt","html","php","gif");   // File extension that are 

allowed 

if(in_array($file_ext,$extensions )=== false){ // check if value exists in array
     $errors[]="extension not allowed.";


    }
    if($file_size > 2097152){ // cant be greater than 2mb
    $errors[]='File size must be excately 2 MB';

    }               
    if(empty($errors)==true){
        mysql_query($sql);
        move_uploaded_file($file_tmp,"upload/".$file_name); 

        echo "Success";
        header("location:files.php"); // Send back to main page

    }else{
        print_r($errors);
 }

}
?>      
4

4 に答える 4

4

私の場合、次の理由から、データベースに画像を保存することはお勧めしません。-管理するには重すぎる。-速度の欠如(ただし、画像が重い場合はさらに多くの画像が表示されます)。

したがって、画像をディレクトリ、そのプロパティ(タイプ、サイズ、作成者..)、そしてもちろんデータベース内のディレクトリへのリンクに配置することをお勧めします。

于 2013-03-25T16:52:19.580 に答える
3

現在、私は2つの方法を考えることができます

1.使用する

BLOB       
MEDIUMBLOB 
LONGBLOB   

mysqlのデータ型... file_get_contents()を使用してコンテンツを取得し、コンテンツを挿入します

  1. 使用する

      text
    

    データ型..コンテンツをエンコードしてから保存します。

または、ファイルへのパスだけを保存することもできます...http://domain/img.jpg テーブル列に保存するように

于 2013-03-25T16:50:25.477 に答える
0

例:

  $link = mysqli_connect("localhost", "root", "");
  mysqli_select_db($link, "mydb"); 

  $stmt = $link->prepare("insert into myfile (id, arq) values (?, ?)");

  $stmt->bind_param("ss", $id, $file);

  $id = 5;
  $file = file_get_contents("C:\\myfile.png");

  $stmt->execute();

HTMLフォーム()を使用してファイルをアップロードする場合はenctype='multipart/form-data'、行を変更します

  $file = file_get_contents("C:\\myfile.png");

  $file = file_get_contents($_FILES['myFileName']['tmp_name']);

ここでmyFileName、in$_FILES['myFileName']は入力ファイルのhtml要素の名前です。

于 2018-05-17T23:18:24.083 に答える
-1

あなたの問題は何ですか?この質問にはさまざまなトピックがありますが、1つはこれです

于 2013-03-25T16:46:51.857 に答える