“上传”表单以获取文件的完整位置?

时间:2011-09-10 11:30:45

标签: php javascript file-upload

我创建了一个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
}
?>

2 个答案:

答案 0 :(得分:1)

  

我想要的只是获取所选文件的位置并将其输入数据库。

使用HTML不再可能 - 出于安全原因,文件输入的DOM元素中不再可以访问所选文件的位置。大多数浏览器使用C:\Fakepath\代替。

您可以使用Flash或基于Java的上传器获取此信息(编辑:请参阅AS3手册中的this pageSWFUpload'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']))