通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器相关的知识,希望对你有一定的参考价值。

关于如何使用php代码将本地文件从应用程序上传到FTP,我想要一些帮助。我是一个业余程序员,可以阅读非常基本的代码结构。所以请避免使用编程术语!

我正在开发一个简单的Windows应用程序(通过可视化编程)。该应用程序将通过网站(例如http://www.mysite/folder/ftp.php)将本地文件上传到我的FTP服务器。我这样做是为了避免在应用程序代码中包含我的FTP登录详细信息。

我发现了一个似乎有效的PHP代码,但我不明白如何在代码中包含我的本地文件路径(例如C:UserDesktopmyfile.txt)。我希望使用以下代码,我发现这很容易理解。我只是不知道如何指定本地文件的路径以及该文件的上传路径。最后,本地路径将在链接中指定(例如http://www.mysite/folder/ftp.php?localpath=....。),所以我认为我应该使用$file=$_GET['file'];而不是$file = ".....";

<?php 
$ftp_server=""; 
$ftp_user_name=""; 
$ftp_user_pass=""; 
$file = "";//tobe uploaded 
$remote_file = ""; 

// set up basic connection 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// upload a file 
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) { 
    echo "successfully uploaded $file
"; 
    exit; 
} else { 
    echo "There was a problem while uploading $file
"; 
    exit; 
    } 
// close the connection 
ftp_close($conn_id); 
?>
答案

您的Web服务器上的PHP代码绝对无法访问您的本地文件。那将是一场安全噩梦。


您的应用程序必须使用HTTP文件上载(Content-Type: multipart/form-data)将您的本地文件(其内容,而不仅仅是文件名)主动上传到Web服务器。

然后,您的PHP代码可以使用$_FILES变量引用上传的文件。 请参阅PHP中的POST method uploads

由于您似乎无法理解客户端和服务器端代码,因此您可能首先应该首先实现(和调试)服务器端。对于客户端,使用简单的HTTP / html文件上载表单来测试服务器端部分。一旦您启动并运行,请将HTML上载表单替换为应用程序中的代码。

换句话说,如果您想使用PHP内置支持来上传文件,那么在提交带有文件(<form>)的HTML <input type="file" name="..."/>时,您需要让您的应用程序执行与Web浏览器相同的HTTP请求。


如果您发现在您的(客户端)开发环境(我们不知道任何事情)中实现HTTP文件上传很困难,您可以使用一些更简单的机制,例如带有文件内容的简单HTTP POST请求(没有多部分,只是二进制数据)的文件)。虽然我相信大多数桌面应用程序大多数框架本来都支持HTTP文件上传。

以上是关于通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

本地机器上的 Web 服务器,有啥陷阱吗?

PHP - 发送带有方法参数的 SOAP Web 服务

带有 web.config 文件的 IIS 上的 Codeigniter 2

PHP 无法将上传的文件移动(写入)到挂载的网络驱动器

PHP web项目(数据库)上线部署到服务器

Flink 可以通过 java 代码使用 Web Ui 将多个作业附加到 Stream 本地环境吗?