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

问题描述 投票:1回答:1

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

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

我发现了一个似乎有效的PHP代码,但我不明白如何在代码中包含我的本地文件路径(例如C:\User\Desktop\myfile.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\n"; 
    exit; 
} else { 
    echo "There was a problem while uploading $file\n"; 
    exit; 
    } 
// close the connection 
ftp_close($conn_id); 
?>
php http file-upload ftp
1个回答
0
投票

您的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文件上传。

© www.soinside.com 2019 - 2024. All rights reserved.