Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用表单上载服务器文件_Php - Fatal编程技术网

Php 使用表单上载服务器文件

Php 使用表单上载服务器文件,php,Php,我有一个非常简单的表单,但我的情况不同。我不想从计算机上浏览。我的文件位于我的服务器上,因此我如何在表单字段中浏览服务器文件。如果我无法浏览,我可以提供任何位置,以便它可以再次上载到我的服务器上,但位置不同,参数也不同,因此我不想使用移动方法 我不想使用远程url上传方法,因为远程url方法我无法检查文件类型,如果可以使用curl进行检查,那么我的表单处理脚本也不接受链接,因为它不是有效的文件格式。解决此问题的任何想法都将大有帮助 我不想为用户我必须提交这些文件使用的形式 <form a

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

我不想使用远程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>

要上载的文件:
关于该文件的注释:

上传文件!
你不能

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

  • 用浏览器对话框提示用户,让他们从远程目录中选择文件
  • 将这样的路径发送到您的服务器,在那里您将验证数据[例如,只接受来自给定目录的存档,以免弄乱文件系统]
  • 一旦选择了路径,就可以检查MIME类型等,然后复制/移动归档文件,并用操作结果回复客户端

  • 如果您的脚本“无法接受链接”,请更改它。

    对此我仍不清楚。我不知道你为什么要用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>
    

    您可以使用
    classic文件管理器

    我也出于同样的目的使用了它


    我不认为您可以使用
    来完成此操作,但您可以使用PHP函数获取特定文件夹中的文件列表,然后根据需要将其呈现给用户。@travesty我不希望用户使用表单提交这些文件。您说您希望能够在表单字段中浏览服务器文件。我所说的“用户”是指任何查看表单的人。您可以将文件列表放在下拉列表或其他地方,然后从该列表中进行选择,然后提交表单,并在
    fup.php
    脚本中,获取表单值并执行任何您想要的操作(复制、移动等)。如果这不是你想要的,你必须明确你想要的是什么样的交互以及你的预期结果。@Travesty3我的服务器中有10000个mp3,我想通过不同的表单处理一个接一个地上传它们,所以我有所有这些文件的清晰细节,但我不知道如何用我的新处理器将它们再次上传到服务器。以前它是以论坛的形式出现的,现在它不同了。我以前尝试过同样的事情,而且文件位于服务器中。我得到的错误。类似于我刚刚传递链接时无法获得的mp3格式。如果你能显示错误产生时使用的代码,我可以帮助你找出错误所在。您可能需要打开文件并将句柄传递给函数,而不是传递文件的路径。这与上面的代码相同非常简单的php上载,可以处理浏览上载。如果您可以帮助打开远程文件并上载,这将是一个很好的帮助。上面的代码中没有任何部分会产生关于不可用的mp3格式。您一直在谈论在服务器上打开一个文件,然后将其上载到服务器。那根本不是上传。上载是指将文件从一个设备传输到另一个设备。为了上传它,你必须先下载它。您所说的是将文件从一个位置复制到另一个位置。如果你想通过表单提交上传文件,你必须先下载文件。同样,产生mp3格式错误的代码在哪里
    $selectNext = false;
    foreach ($files as $file)
    {
        echo "\t\t<option". ($selectNext ? " selected" : "") .">{$file}</option>\n";
        $selectNext = ($file === $_POST["upfile"]);
    }