【问题标题】:Adding file name to database without uploading it将文件名添加到数据库而不上传
【发布时间】:2013-01-31 10:57:36
【问题描述】:

我正在制作一个用于将文件添加到数据库的系统。我用了一个表格:

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

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

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

【问题讨论】:

  • 我不知道您为什么需要这样做,因为服务器将无法访问您计算机上而不是服务器上的文件。这意味着服务器将无法将该文件“提供”给其他访问者。它只会告诉你名字是什么。

标签: php mysql file upload


【解决方案1】:

你必须做一些 JavaScript 魔术。一旦用户选择了一个文件,您就可以读取文件名:

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

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

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

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

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

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

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

关于您的最后一个问题(没有扩展名),请看这个:PHP, get file name without file extension

【讨论】:

  • 我真的不太擅长 javascript。我应该把你写的代码放在哪里?另外我不想要文件路径,只想要名称。谢谢!
  • 好吧,我无法为您编写所有代码。您必须尝试一下。
  • 好的。 :) 但是你的意思是:然后挂钩表单的提交事件并删除文件输入,这样它就不会被提交。
  • 您添加一个事件处理程序(一个函数),当用户提交表单时会调用它。
猜你喜欢
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多