2012-12-09 122 views
4

我有一個問題,我可以上傳文件到另一臺服務器,而不捲曲.. 因爲不是每個服務器都捲曲... 謝謝...PHP - 上傳文件到另一臺服務器,而不捲曲

+1

接收服務器是否有cURL並不意味着什麼。重要的是,執行服務器擁有它。回答您的實際問題:從技術上講,取決於遠程服務器支持哪種文件傳輸模式。它有FTP嗎? (例如) – ATaylor

+0

是的,它有ftp ... 你能回答我的問題嗎... –

回答

5

有可能使用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); 

然而,在FTP站點將提供您與該位置的FTP文件以及用戶名和密碼。

5

是的,可以使用純PHP PHP fopen和stream_context_create。以下示例來自在線PHP手冊(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); 
相關問題