Upload file with php to another php server

PHPServer Side ProgrammingProgramming

The fopen, fread and fwrite functions can be used to open a file stream, read a data stream and write that data to a file respectively.

The file resource doesn't necessarily need to point to a location on the local machine itself.

Below is an example that transfers a file from the local server to ftp server −

$file = "file_name.jpg";
$destination = fopen("ftp://username:password@example.com/" . $file, "wb");
$source = file_get_contents($file);
fwrite($destination, $source, strlen($source));

The image needs to be transferred to an FTP server. Hence the server is opened in write mode, and the image is written to that location and the stream is closed.

The curl extension uses Client URL Library (libcurl) to transfer files from one location to the other. The logic of implementing a curl solution follows the below logic −

  • Initialize a session first.
  • The desired transfer options can be set.
  • The transfer can be performed.
  • The session can be closed.

The curl session can be initialized using the 'curl_init' function. It returns a resource that could be used with other curl functions.

The destination to upload the file and other factors associated with the transfer session can be set using the 'curl_setopt'.

This takes the curl resource, that is a predefined constant which represents the setting and the optional value.

Below is an example demonstrating the same −

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

The second server can be handled as a regular file upload.

Updated on 06-Apr-2020 08:49:40