我想知道用户在网页表单控件中上传任何(JPG,JPEG,PDF,Zip等...)文件是否有可能直接上传/放入FTP服务器而不存储首先在网站服务器临时,然后在FTP服务器中传输?
实际上我有一个商业案例,用户可以上传超过200 MB的文件,所以在这里我想直接将其传输到远程FTP服务器而不将其存储在网站服务器中。
我进一步研究过html表单标签允许FTP协议在Action属性中,下面是我试过的代码剪断。
<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网址,这将显示我在upload.php文件中编写脚本的PHP代码。
实际上我已经知道如何在表单提交并从服务器临时位置传输文件后如何在远程FTP服务器中传输文件($ _FILES [&#39;上传文件&#39;] [&#39; tmp_name&#39 ;])到FTP服务器,但通过这种方式,它将花费两倍的时间,首先文件上传到网站服务器,然后进一步传输远程FTP服务器。
您也可以建议我实现业务需求的替代方法。
提前致谢。
答案 0 :(得分:0)
您可以使用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/";
//您要将文件放在网络服务器上(相对于您的登录目录)
$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";
}
?>