我创建了一个HTML和PHP表单,几乎只是将数据输入到MySQL表中
我有一个文件上传字段,但它没有上传文件。我不希望它上传任何东西到服务器,我想要的是它抓住所选文件的位置并将其输入数据库。
它在Internet Explorer上工作得很好,但在任何其他浏览器上都不起作用,我认为这是因为它施加的安全问题。
我的输入代码:
<input type="file" id="filename" name="filename" />
当然,当提交表单时,一些PHP代码会运行以将数据插入到数据库中。我已经尝试过JavaScript将该字段的值复制到另一个字段,但是由于安全问题不起作用 有谁知道我可以用JavaScript做到这一点的方法?甚至Flash?说实话,任何类似于这些的东西都可以,只是在IE以外的浏览器中有效。
感谢。
编辑 -
这是我的代码:
<?php
if (isset($_POST['submit'])) {
$name = addslashes(htmlentities($_POST['name']));
$filename = addslashes(htmlentities($_POST['filename']));
if (@mysql_query("INSERT INTO movies SET
name='$name',
doc_filename='$filename'")) {
echo '<p>Movie added.</p><p><a href=movies.php">Manage movies</a>.</p>';
} else {
echo '<strong>Error:</strong> '.mysql_error().'';
}
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="newspost" enctype="multipart/form-data">
<div class="form-row">
<label for="fm_title">Movie file path: </label><br />
<input type="file" id="filename" name="filename" />
</div><br />
<div class="form-row">
<label for="fm_title">Movie name: </label><br />
<input type="text" class="input-width" name="name" value="<?php if (!empty($_POST['name'])) { echo $_POST['name']; } ?>" />
</div>
<div class="form-row">
<input type="submit" name="submit" value="Submit" />
</div>
</form>
<?php
}
?>
答案 0 :(得分:1)
我想要的只是获取所选文件的位置并将其输入数据库。
使用HTML不再可能 - 出于安全原因,文件输入的DOM元素中不再可以访问所选文件的位置。大多数浏览器使用C:\Fakepath\
代替。
您可以使用Flash或基于Java的上传器获取此信息(编辑:请参阅AS3手册中的this page)SWFUpload's API值得一看。但是,您可能需要为此构建自己的Flash或Java解决方案。
答案 1 :(得分:0)
您如何发布表单数据?我无法看到任何形式的帖子。没有提交按钮或onclick或javascript的onchange事件?以及你如何假设这一行提供输出
<input type="text" class="input-width" name="name" value="<?php if (!empty($_POST['name'])) { echo $_POST['name']; } ?>" />
因为它已经在行的其他部分
if (isset($_POST['submit']))