Загрузить локальный файл из приложения через веб-сервер с кодом PHP на FTP-сервер - PullRequest
0 голосов
/ 06 сентября 2018

Мне нужна помощь по загрузке локального файла из приложения на FTP с использованием PHP-кода. Я программист-любитель, который умеет читать основную структуру кода. Поэтому, пожалуйста, не используйте термины программирования!

Я занимаюсь разработкой простого приложения для Windows (с помощью визуального программирования). Приложение будет загружать локальный файл на мой FTP-сервер через веб-сайт (например, http://www.mysite/folder/ftp.php).. Я делаю это, чтобы избежать включения моих регистрационных данных 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); 
?>

1 Ответ

0 голосов
/ 06 сентября 2018

Ваш код PHP на вашем веб-сервере абсолютно не может получить доступ к вашим локальным файлам. Это был бы кошмар безопасности.


Ваше приложение должно активно загружать локальный файл (его содержимое, а не только имя файла) на веб-сервер с помощью загрузки файла HTTP (Content-Type: multipart/form-data).

Затем ваш PHP-код может ссылаться на загруженный файл с помощью переменной $_FILES.
См. POST метод загрузки в PHP.

Поскольку у вас возникают проблемы с пониманием кода как на стороне клиента, так и на стороне сервера, возможно, вам следует начать с первой реализации (и отладки) только на стороне сервера. Для клиентской стороны используйте простую форму загрузки файлов HTTP / HTML для тестирования серверной части. И после того, как у вас все будет в порядке, замените форму загрузки HTML кодом в своем приложении.

Другими словами, если вы хотите использовать встроенную поддержку PHP для загрузки файлов, вам нужно заставить приложение делать тот же HTTP-запрос, что и веб-браузер, при отправке HTML <form> с файлом ( <input type="file" name="..."/>).


Если вам сложно реализовать загрузку файла HTTP в вашей (клиентской) среде разработки (о которой мы ничего не знаем), вы можете использовать более простой механизм, например простой запрос HTTP POST с содержимым файла (нет multipart, просто двоичные данные файла). Хотя я считаю, что большинство настольных приложений в большинстве сред поддерживают загрузку файлов HTTP в наши дни.

...