2013-01-31 39 views
0

我正在制作一个用于将文件添加到数据库的系统。我使用的一种形式:将文件名添加到数据库而不上传它

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

但是,当我加入这似乎是上传整个文件中的文件,因为在我的浏览器中的计数器%和:

<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代码它需要很长的时间才能完成(文件非常庞大)。我只想将文件的名称插入数据库(并且正在工作),但不要上传整个文件。

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

+0

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

+0

[pathinfo()](http://php.net/manual/en/function.pathinfo.php) – 2013-01-31 11:07:41

回答

1

你将不得不做一些JavaScript的魔术。一旦用户选择了一个文件,你可以阅读的文件名:

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

然后把该值到一个隐藏输入字段(也就是你的表格里面):

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

然后勾入表单的提交事件,并删除文件输入,所以它不会被提交。

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

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

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

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

+0

我真的没那么好用javascript。我应该在哪里写你写的代码?另外我不想要文件路径,只是名称。谢谢! –

+0

嗯,我不能为你写所有的代码。你必须尝试一点。 –

+0

好的。 :)但你是什么意思: 然后钩入表单的提交事件,并删除文件输入,所以它不会被提交。 –

相关问题