PHP – Carregar arquivo para outro servidor sem curl

Eu tenho uma pergunta, posso carregar arquivos para outro servidor sem curl … Porque nem todos os servidores possuem CURL … Obrigado …

É possível usar ftp_put :

define("LOCAL_FILE","PATH_TO_LOCAL_FILE"); define("FTP_ADDRESS","ftp.domain.com"); define("FTP_FILE","PATH_TO_REMOTE_FILE"); define("FTP_USERNAME","USERNAME"); define("FTP_PASSWORD","PASWORD"); $conn = ftp_connect(FTP_ADDRESS); $login = ftp_login($conn, FTP_USERNAME, FTP_PASSWORD); ftp_put($conn, FTP_FILE, LOCAL_FILE, FTP_ASCII); ftp_close($conn); 

Considerando que, o domínio ftp forneceria o local para o arquivo ftp, bem como o nome de usuário e a senha.

Sim, é possível usar fopen PHP puro juntamente com stream_context_create. O exemplo a seguir vem do manual PHP online ( http://php.net/manual/en/function.stream-context-create.php ):

 function do_post_request($url, $postdata, $files = null) { $data = ""; $boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10); //Collect Postdata foreach($postdata as $key => $val) { $data .= "--$boundary\n"; $data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n"; } $data .= "--$boundary\n"; //Collect Filedata foreach($files as $key => $file) { $fileContents = file_get_contents($file['tmp_name']); $data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n"; $data .= "Content-Type: image/jpeg\n"; $data .= "Content-Transfer-Encoding: binary\n\n"; $data .= $fileContents."\n"; $data .= "--$boundary--\n"; } $params = array('http' => array( 'method' => 'POST', 'header' => 'Content-Type: multipart/form-data; boundary='.$boundary, 'content' => $data )); $ctx = stream_context_create($params); $fp = fopen($url, 'rb', false, $ctx); if (!$fp) { throw new Exception("Problem with $url, $php_errormsg"); } $response = @stream_get_contents($fp); if ($response === false) { throw new Exception("Problem reading data from $url, $php_errormsg"); } return $response; } //set data (in this example from post) //sample data $postdata = array( 'name' => $_POST['name'], 'age' => $_POST['age'], 'sex' => $_POST['sex'] ); //sample image $files['image'] = $_FILES['image']; do_post_request("http://example.com", $postdata, $files);