2010-12-02 87 views
-1

文件上傳PHP中,我們使用HTML文件的標籤,而不是文件的標籤我能給直接路徑名稱...PHP文件上傳

正常程序

move_uploaded_file($_FILES['file']['tmp_name'],'path'.$_FILES['file']['name']) 

工作正常...

相反,我給喜歡

move_uploaded_file(C:/Users/lenovo/Desktop/images/img03.jpg,'path/img03.jpg') 

不工作,爲什麼?.......
我需要給路徑名稱這樣才....
我該怎麼辦呢....
任何其他方式是有沒有做像DIS ....
可以到本地服務器的遠程支持服務器

+0

您有關於一個根本性的誤解上傳文件的工作原理 – 2010-12-04 12:03:52

回答

0

你必須認識到,PHP正在上傳文件到一個臨時路徑,直到它證實一切正常。這就是說,你必須指定原始的臨時路徑作爲源,但你可以改變目的地的方式。你可以試試下面的:

$newFile = implode(PATH_SEPARATOR,Array('path','to',basename($_FILES['file']['name']))); 
move_uploaded_file($_FILES['file']['tmp_name'],$newFile); 

我忘了,如果你需要的基本名稱,它已經有一段時間,因爲我在PHP處理文件。但是,這將允許您通過$fileName

1

改變「目的地」看到documentation第一行:

此功能檢查,以確保由filename指定的文件是一個有效的上傳文件(意思它是通過PHP的HTTP POST上傳機制上傳的)。如果文件有效,它將被移動到由目的地給出的文件名。

如果文件沒有上傳,那麼它不會動它

你想要的是重命名: http://www.php.net/manual/en/function.rename.php

如果你是跨命名不能跨越邊界去,然後你想要copy()unlink()

0

我想你試圖上傳本地文件到遠程服務器。您可以編寫一個函數來模擬HTML表單是這樣的:

<?php 
/** 
* Upload local file to remote server 
* 
* @param string local file 
* @param string the target URL 
* @param string name of the form input (<input type="file" name="..." />) 
*/ 
function send_file($filename, $target_url, $field_name) 
{ 
    // Check if file exist 
    file_exists($filename) OR die('Cannot find file'); 

    // Get file extension 
    $ext = substr($filename, strrpos($filename, '.') + 1); 

    // Guess mimetype, add more mimetypes here 
    if ($ext == 'jpg') { 
     $mime = 'image/jpg'; 
    } else if ($ext == 'gif') { 
     $mime = 'image/gif'; 
    } else if ($ext == 'png') { 
     $mime = 'image/png'; 
    } else { 
     $mime = 'text/plain'; 
    } 

    // Extract URL to local variables 
    extract(parse_url($target_url)); 

    // Build request header and body 
    $boundary = '---------'.str_replace('.', '', microtime()); 
    $reqbody = '--'.$boundary."\r\n" 
       . 'Content-Disposition: form-data; name="'.$field_name.'"; filename="'.$filename.'"'."\r\n" 
       . 'Content-Type: '.$mime."\r\n\r\n" 
       . file_get_contents($filename)."\r\n" 
       . '--'.$boundary.'--'."\r\n"; 
    $bodylen = strlen($reqbody); 
    $reqhead = 'POST '.(isset($path) ? $path : '/').' HTTP/1.1'."\r\n" 
       . 'Host: '.$host."\r\n" 
       . 'Content-Type: multipart/form-data; boundary='.$boundary."\r\n" 
       . 'Content-Length: '.$bodylen."\r\n" 
       . 'Connection: Close'."\r\n\r\n"; 

    // Open socket connection to remote host 
    $fp = fsockopen($host, isset($port) ? $port : 80) OR die ('Cannot connect'); 

    fputs($fp, $reqhead); 
    fputs($fp, $reqbody); 

    // ...Read response here... 

    fclose($fp); 
} 

使用方法如下:

send_file('C:/Users/lenovo/Desktop/images/img03.jpg', 'http://example.com/upload.php', 'file'); 

凡在http://example.com/upload.php腳本包含:

<?php 
move_uploaded_file($_FILES['file']['tmp_name'], 'path/for/'.$_FILES['file']['name']) 
?>