繁体   English   中英

直接在FTP服务器中上载/放入文件,而用户将以网页形式上载

[英]Upload/Put file Directly in FTP server while user will upload in webpage form

我想知道用户是否有可能在网页表单控件中上传任何文件(JPG,JPEG,PDF,Zip等),而该文件将直接上传/放置到FTP服务器上而无需在其中存储第一个临时文件网站服务器然后在FTP服务器上传输?

实际上,我有一个业务案例,用户可以上传超过200 MB的文件,因此在这里我想直接将其传输到远程FTP服务器中而不将其存储在网站服务器中。

我进一步调查了html表单标签允许“操作”属性中的FTP协议,下面是我尝试过的代码片段。

<form action="ftp://username:password@domainname/upload.php" enctype="multipart/form-data" method="post">
    <table style="border-collapse: collapse;" border="1" width="500px">
        <tbody><tr>
            <td> Upload File :</td>
            <td> <input name="uploadedfile" type="file"> </td>
        </tr>
        <tr>
            <td colspan="2">
             <input name="Save File" value="Save File on Server" type="submit">
            </td>
        </tr>     
    </tbody></table>
</form>

但是,当我尝试上传图像并提交图像时,它会将我重定向到浏览器中的ftp:// username:password@domainname/upload.php URL中,这将显示我在upload.php中编写的PHP代码文件。

实际上,我已经知道,一旦表单提交并将文件从服务器临时位置($ _FILES ['uploadedfile'] ['tmp_name'])传输到FTP服务器,如何在远程FTP服务器中传输文件,但是通过这样做,它将首先将文件上传到网站服务器,然后再在远程FTP服务器中进行传输,这需要两倍的时间。

您也可以向我建议实现我的业务需求的另一种方法。

提前致谢。

您可以使用ftp_put()。 http://php.net/manual/en/function.ftp-put.php

.php文件的开头如下所示:

<?PHP
   $myFile = $_FILES['file_name']; // This will make an array out of the file information that was stored.
?>

现在,当涉及到传输信息时...

<?PHP
        $destination_path = "src/bin/"; 

//要将文件扔到Web服务器上的位置(相对于登录目录)

$destination_file = $destination_path."img.jpg";

//这将创建一个完整的路径,最后带有文件供您使用,例如像这样拆分变量,以防万一我需要单独使用或动态创建新文件夹。

$file = $myFile['tmp_name'];

//将数组转换为包含文件所在服务器上路径名的新字符串。

    $upload = ftp_put($conn_id, $destination_file, $file, FTP_BINARY);// upload the file
    if (!$upload) {// check upload status
        echo "FTP upload of $destination_file has failed!";
    } else {
        echo "Uploaded $file to $conn_id as $destination_file";
    }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM