0

データベースにファイルを追加するためのシステムを作っています。私はフォームを使用します:

<form action="insert.php" method="post" enctype="multipart/form-data">
Fil: <input type="file" name="file" id="file">
Titel: <input type="text" name="titel" /><br />
Längd (min): <input type="text" name="langd" /><br />
Medverkande: <input type="text" name="medverkande" /><br />
Reporter: <input type="text" name="reporter" /><br />
Fotograf: <input type="text" name="fotograf" /><br />
Sökord: <input type="text" name="sokord" /><br />
<input type="submit" />
</form>

insert.phpのコード:

<?php
$con = mysql_connect("database","user","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("165666-kltvplay", $con);

$filnamn = $_FILES["file"]["name"] ;
$sql="INSERT INTO Blad1 (ProgramID, Titel, Langd, Medverkande, Reporter, Fotograf, Sokord)
VALUES
('$filnamn','$_POST[titel]','$_POST[langd]','$_POST[medverkande]','$_POST[reporter]','$_POST[fotograf]','$_POST[sokord]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "En ny film inlagd: <br> ";
echo $filnamn;

mysql_close($con);
?>

しかし、ファイルを追加すると、ブラウザーに%カウンターがあり、完了するのにかなりの時間がかかるため、ファイル全体がアップロードされているように見えます(ファイルはかなり大きいです)。ファイルの名前をデータベースに挿入したい(そしてそれは機能している)が、ファイル全体をアップロードしたくない。

また、ファイルの拡張子ではなく、名前だけを追加することは可能ですか?

4

1 に答える 1

1

JavaScriptの魔法を使う必要があります。ユーザーがファイルを選択すると、ファイル名を読み取ることができます。

var fileName = document.getElementById('file').value;

次に、その値を非表示の入力フィールド(フォーム内)に入力します。

document.getElementById('hidden-filename').value = fileName;

次に、フォームの送信イベントにフックし、ファイル入力を削除して、送信されないようにします。

サーバーで、hidden-filename(または任意の名前)の値を読み取り、それをDBに挿入します。

ただし、すべてのブラウザが実際のファイルパスを返すわけではないことに注意してください。ファイルの名前は正しいですが、パスは正しくない可能性があります。

また、このファイルでは(サーバー上またはクライアント上で)何もできないことに注意してください。

あなたが持っていた最後の質問(拡張子なし)については、これを見てください:PHP、ファイル拡張子なしでファイル名を取得してください

于 2013-01-31T11:05:14.283 に答える