Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Upload file with php to another php server

Tags:

I'm not asking about uploading a file from a browser to a php script, there's plenty of tutorials about that already. I'm asking about this:

I have a php script that has accepted a file from the user, and the file is currently on the hard disk of server 1. I want to upload the file from server 1 to a php script on server 2, using the regular Http post protocol, so the php script on server 2 can be written as a standard file-upload handler.

I cannot find any tutorial on the internet, because they all talk about browser->server1. The tutorials about php upload all talk about ftp, but I don't want to use that protocol.

Please help?

like image 338
Tominator Avatar asked Jun 28 '10 20:06

Tominator


2 Answers

You can use CURL for this. Something like this should do it.

$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); 

You can then handle the the server2 part as a regular file upload. See curl_setopt() for more information on those options.

like image 116
Daniel Egeberg Avatar answered Sep 28 '22 08:09

Daniel Egeberg


You could use SOAP to send the file from one server to the other.

Receiving server:

<?php $server = new Soap_Server( null, array('uri'=>'somerui') ); $server->addFunction( 'receiveFile' ); function receiveFile( $file ) {    file_put_contents( 'somepath', base64_decode( $file ) ); } ?> 

Sending server:

<?php $client = new Soap_Client( null, array('uri'=>'somerui') ); $client->receiveFile( base64_encode( file_get_contents( 'somepath' ) ); ?> 
like image 26
bkulyk Avatar answered Sep 28 '22 08:09

bkulyk