как открыть TXT-файл с другого сервера с помощью PHP

0

Я хочу открыть и написать txt файл с другого сервера, но я не знаю, как это сделать? Может кто-нибудь мне помочь?

<?PHP
   $fname=$_POST["fname"];

   $groupid=$_POST["groupid"];
   $myfile = fopen("Ji.txt", "a+") or die("Unable to open file!");
   fwrite($myfile, $fname."|".$groupid."\r\n");
   fclose($myfile)
?>

Я хочу заменить Ji.txt с помощью http://xxx.xxx.xx.x/ddd.txt

  • 0
    Вам придется использовать FTP или что-то подобное, чтобы добиться этого ...
Теги:

4 ответа

1
Лучший ответ

В качестве альтернативы вы можете сделать это с помощью функций FTP

<?php
// Connect to remote FTP server
$conn = ftp_connect("ftp.example.com")or die("Cant connect to ftp server");
$login = ftp_login($conn, "username", "password");

// Open local (temporary) file handle
$fh = fopen("Ji.txt", "a+");

// Get remote file and save it to the previous file handle
if(ftp_fget($conn, $fh, "Ji.txt", FTP_ASCII))
{
    // Local file has now been updated with the content of the remote Ji.txt
    $fname = $_POST['fname'];
    $groupid = $_POST['groupid'];
    fwrite($fh, $fname.'|'.$groupid.'\r\n');
    if(ftp_fput($conn, "Ji.txt", $fh, FTP_ASCII))
        echo 'File saved to remote server';
    else
        echo 'Error saving to remote server';
}
else
    echo 'Error downloading remote file';

ftp_close($conn);
fclose($fh);
?>

Узнайте больше о ftp_fput и т.д. Здесь: http://php.net/manual/en/function.ftp-fput.php

  • 0
    Я обновил код, так как исходный код выполнял только операцию записи на удаленный сервер. Обновленный код сначала извлекает удаленный файл, затем добавляет переменные $ _POST и затем загружает его на удаленный сервер.
2

Вы можете читать файлы через HTTP, используя fopen или cURL.

Вы не можете записывать файлы через HTTP, если только сервер, на который вы пишете, не настроен на соответствующий запрос. Вы можете настроить его для поддержки запросов PUT (убедитесь, что у вас есть какая-то система authn/authz!) И сделайте один с помощью cURL.

Кроме того, вы можете использовать другой протокол, чтобы сделать файл доступным между серверами (например, NFS).

0

Предполагая, что у вас есть доступ к другому серверу, и текстовый файл доступен на веб-адресе (т.е. Вы можете увидеть его в браузере), вы можете использовать fopen, чтобы захватить его, внести свои изменения или что-то еще, а затем вернуться к сценарию, который будет обрабатывать данные сообщения и сохранять файл с помощью curl. Пример кода ниже скопирован из этого ответа

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@/path/to/file.txt'));
 curl_setopt($ch, CURLOPT_URL, 'http://server2/upload.php');
 curl_exec($ch);
 curl_close($ch);
0

Пока для параметра allow_url_fopen установлено значение True, вы можете передать URL-адрес fopen() и прочитать данные. Однако писать невозможно. Однако вы можете написать обертку вокруг файла, который принимает запросы GET & POSTS. GET возвращает содержимое файла, а POST (или PUT) сохраняет содержимое файлов. Недостатком этого является то, что вы должны добавить безопасность, и это намного сложнее для сохранения данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню