将文件名添加到数据库而不上传它

时间:2013-01-31 10:57:36

标签: php mysql file upload

我正在建立一个将文件添加到数据库的系统。我用一个表格:

<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);
?>

但是当我添加文件时,它似乎是上传整个文件,因为我的浏览器中有一个%计数器,并且需要花费很长时间才能完成(文件很大)。我只想将文件的名称插入数据库(这是有效的)但不要上传整个文件。

是否可以只添加名称而不是文件exetension?

1 个答案:

答案 0 :(得分:1)

你必须做一些JavaScript魔法。用户选择文件后,您可以读取文件名:

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

然后将该值放入隐藏的输入字段(即表单内):

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

然后挂钩到表单的提交事件并删除文件输入,以便它不会被提交。

在服务器上,您读取hidden-filename(或任何名称)的值,并将其插入数据库。

请注意,并非所有浏览器都会返回实际的文件路径。文件的名称是正确的,但路径可能不是。

另请注意,您将无法对此文件执行任何操作(在服务器上或客户端上)。

AS为您提出的最后一个问题(无扩展名),请查看:PHP, get file name without file extension