1

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

我不想像使用远程 url 方法那样使用远程 url 上传方法我无法检查文件类型,如果可以使用 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>
4

3 回答 3

0

你不能。

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

  1. 使用浏览器对话框提示用户,让他们从远程目录中选择文件;
  2. 将此类路径发送到您的服务器,您将在其中验证数据[例如,仅接受来自给定目录的存档,以免与文件系统混淆];
  3. 一旦您选择了路径,您可以检查 MIME 类型 / 等,然后复制/移动存档并用操作结果回复客户端。

如果您的脚本“不能接受链接”,请更改它。

于 2012-09-20T16:09:40.153 回答
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"]);
}
于 2012-09-20T16:36:52.487 回答
0

您可以使用浏览服务器图像classic file manager

我也将它用于相同的目的

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

于 2012-09-21T10:24:54.317 回答