-3

このコードを使用して画像をアップロードしました。このコードはstackoverflowから取得しました。それでも画像をアップロードできません。テーブル設定2でdb接続設定を変更しました。テーブルを作成しましたが、作成したテーブルのプロパティが正しいかどうかわかりません。

<html>
<head><title>Store Some Binary File to a DB</title></head>
<body>

<?php
if ($submit) {
    $conn = mysql_connect("localhost", "your_username", "your_password") 
        or die ("Error connecting to database.");

    mysql_select_db("your_database", $conn) 
        or die ("error connecting to database.");

    $data = addslashes(file_get_contents($_FILES['form_data']['tmp_name'])


    $result = mysql_query ("INSERT INTO your_table ".
         "(description,bin_data,filename,filesize,filetype) ".
         "VALUES ('$form_description','$data','$form_data_name',".
         "'$form_data_size','$form_data_type')",
         $conn);

    $id = mysql_insert_id();
    print "<p>This file has the following Database ID: <b>$id</b>";

    mysql_close();

} else {
?>

    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    File Description:<br>
    <input type="text" name="form_description"  size="40">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    <br>File to upload/store in database:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="submit" value="submit">
    </form>

<?php

}

?>

</body>
</html>

また、データベースから画像を取得してページに表示するのを手伝ってください。

これでうまくいくと思いますか?

4

3 に答える 3

1

http://www.php.net/manual/en/features.file-upload.phpを参照してください

アップロードされたファイルのファイル名として$form_dataを使用する代わりに、$_FILES['form_data']['tmp_name']

かなり不器用なものを置き換えることもできます

fread(fopen($form_data, "r"), filesize($form_data))

file_get_contents($_FILES['form_data']['tmp_name'])
于 2008-12-11T16:27:38.167 に答える
1

ファイルシステムに画像を保存する際の問題は、データベースの複製にあります。また、ファイルシステムのレプリケーションも必要になります。これは、特に一部のサーバーがリモートの場合は、データベースのレプリケーションよりも難しい場合があります。

$ form_変数は設定されていません(コードが表示されない場合、または「危険なほど」レジスタグローバルがオンになっている場合を除く)。また、REQUEST値を受け入れるクエリには、スラッシュ(またはmysql_real_escape_string)を追加する必要があります。そうしないと、スクリプトでSQLインジェクションが発生しやすくなります。

あなたはしたい:

$form_description = isset($_POST['form_description']) ? $_POST['form_description'] : false;

他の変数は投稿されていません。HTMLとPHPを知っていますか?これは簡単に解決できますが、私はあなたのためにこれを書いていません!

必要なのは、スクリプトが生成するフィードバックです。次の手順を実行すると、画像を元に戻すことができます。

$result = mysql_query ("SELECT `bin_data` FROM `your_table` WHERE `id` = ".$id, $conn);

次に、たとえば(コンテンツタイプをファイル配列から決定された関連タイプに置き換えます)を実行します。

$result_data = mysql_fetch_array($result, MYSQL_ASSOC);
header('Content-Type: image/jpg');
echo $result_data['bin_data'];
exit;

そのスクリプトにはもう少し作業を行う必要があり、それにはHTML、PHP、およびMySQLの知識が必要です。

于 2008-12-12T12:28:23.380 に答える
1

バイナリ イメージ ファイルをデータベースに直接保存することはお勧めしません。代わりに、ディスクに保存し、ファイル ポインター (ファイル ディレクトリ + ファイル名) を DB に保存します。

于 2008-12-11T17:33:26.847 に答える