使用表单上传服务器文件

时间:2012-09-20 15:58:38

标签: php

我有一个非常简单的形式,但我的情况是不同的。我不想浏览计算机。我的文件位于我的服务器,所以我如何浏览表单字段中的服务器文件。如果我不能浏览我可以给任何位置所以它可以再次上传到我的服务器,但在不同的位置和所有不同的参数,所以我不想使用移动方法。

我不想使用远程网址上传方法,因为远程网址方法我无法检查文件类型,如果可以使用curl检查,那么我的表单处理脚本也不接受该链接,因为它不是有效的文件格式。解决这个问题的想法将是很有帮助的

我不想要用户,我必须使用表单

提交这些文件
 <form action="fup.php" enctype="multipart/form-data" method="POST">
  File to upload: <input type="file" name="upfile"><br>
  Notes about the file: <input type="text" name="note"><br>
  <br>
  <input type="submit" value="Press"> to upload the file!
   </form>

3 个答案:

答案 0 :(得分:0)

你不能。

如果您希望用户将文件从服务器实际复制/移动到同一台计算机的另一条路径,则必须:

  1. 使用浏览器对话框提示用户,这将允许他们从远程目录中选择文件;
  2. 将此类路径发送到您的服务器,您将在其中验证数据[例如只接受来自给定目录的档案,以免弄乱文件系统];
  3. 一旦你有了选择的路径,就可以检查MIME类型等,然后复制/移动存档并用操作结果回复客户端。
  4. 如果您的脚本“无法接受链接”,请进行更改。

答案 1 :(得分:0)

我还不清楚这一点。我不确定你为什么要用HTML来做这件事,而不是直接在你的服务器上修改文件。

我也不确定你要在每个文件上修改哪些细节:

  • 您要修改哪些细节?
  • 这些详细信息存储在哪里?
  • 如果文件是通过表单提交上传的,您将如何修改这些详细信息?

作为一个起点,让我举一个我最初建议的例子,然后你可以告诉我为什么它对你不起作用。

<强> fup.php:

<?php
    if ($_POST["submit"] === "Press")
    {
        $file = {$_POST["upfile"]};
        $notes = $_POST["note"];

        $path = "/path/to/folder";

        // EDIT: Checking to make sure extension is mp3
        if (strtolower(pathinfo("{$path}/{$file}", PATHINFO_EXTENSION)) !== "mp3")
            sys_back("Unavailable mp3 format");

        `cp {$path}/{$file} /path/to/new/folder/{$file}`;
        // do something with $notes
    }
?>
<form action="fup.php" method="POST">
    File to upload:
    <select name="upfile">
<?php   $files = scandir("/path/to/folder");
        foreach ($files as $file)
            echo "\t\t<option>{$file}</option>\n";
?>  </select><br />
    Notes about the file: <input type="text" name="note"/><br />
    <br />
    <input type="submit" name="submit" value="Press" /> to upload the file!
</form>

由于您提到您将逐个浏览10,000个文件,因此下拉菜单默认情况下会自动选择下一个文件可能会有所帮助,因此您无需查看10,000个文件项目清单每次。您可以通过将foreach循环更改为更像这样的内容来完成此操作:

$selectNext = false;
foreach ($files as $file)
{
    echo "\t\t<option". ($selectNext ? " selected" : "") .">{$file}</option>\n";
    $selectNext = ($file === $_POST["upfile"]);
}

答案 2 :(得分:0)

您可以使用classic file manager

浏览服务器图像

我也将它用于同样的目的

http://github.com/simogeo/Filemanager/archives/master