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(或任何名称)的值并将其插入数据库。

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

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

至于你有的最后一个问题(没有扩展名),看看这个:PHP,获取没有文件扩展名的文件名

于 2013-01-31T11:05:14.283 回答