2012-02-18 106 views
0

當我使用接口訪問myserver索引並從那裏上傳和映像時,它工作正常。但只要我嘗試進入的路徑,像個:試圖上傳圖像時,爲什麼會出現此錯誤?

http://myserver/upload.php?image['name']=F:\Bilder\6.jpg 

它給了我所需要的所有字段錯誤。但是我必須像這樣上傳圖像,因爲我打算在我製作的應用程序中實現它。事情是,我不熟悉PHP。

這裏是upload.php的

<?php 
session_start(); 

require("includes/conn.php"); 


function is_valid_type($file) 
{ 

$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png"); 

if (in_array($file['type'], $valid_types)) 
    return 1; 
return 0; 
} 

function showContents($array) 
{ 
echo "<pre>"; 
print_r($array); 
echo "</pre>"; 
} 

$TARGET_PATH = "images/"; 

$image = $_FILES['image']; 

$image['name'] = mysql_real_escape_string($image['name']); 

$TARGET_PATH .= $image['name']; 

if ($image['name'] == "") 
{ 
$_SESSION['error'] = "All fields are required"; 
header("Location: index.php"); 
exit; 
} 

if (!is_valid_type($image)) 
{ 
$_SESSION['error'] = "You must upload a jpeg, gif, or bmp"; 
header("Location: index.php"); 
exit; 
} 

if (file_exists($TARGET_PATH)) 
{ 
$_SESSION['error'] = "A file with that name already exists"; 
header("Location: index.php"); 
exit; 
} 

if (move_uploaded_file($image['tmp_name'], $TARGET_PATH)) 
{ 
$sql = "insert into Avatar (filename) values ('" . $image['name'] . "')"; 
$result = mysql_query($sql) or die ("Could not insert data into DB: " .  mysql_error()); 

exit; 
} 
else 
{ 
header("Location: index.php"); 
exit; 
} 

?>

,並在index.php

   <?php 
       if (isset($_SESSION['error'])) 
       { 
        echo "<span id=\"error\"><p>" . $_SESSION['error'] . "</p></span>"; 
        unset($_SESSION['error']); 
       } 
       ?> 
       <form action="upload.php" method="post" enctype="multipart/form-data"> 
       <p> 

        <label>Avatar</label> 
        <input type="file" name="image" /><br /> 
        <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
        <input type="submit" id="submit" value="Upload" /> 
       </p> 
+1

'http://myserver/upload.php?image ['name'] = F:\ Bilder \ 6.jpg'不是有效的PHP表達式。你究竟在什麼地方,哪個地方進入了這條路線? – bos 2012-02-18 15:54:47

+0

那麼在我的瀏覽器中,爲了試圖給他一個圖像,而不使用索引接口 – Blade 2012-02-18 15:56:07

回答

1

問題出在

if ($image['name'] == "") 

$圖像沒有價值存在。

你正在做一個GET請求,所以如果你想知道什麼形象變量,你應該使用

$_GET['image'] 

另一件事是,你正在做$圖像= $ _FILES [「形象」];

$ _FILES將只能從發佈請求中獲得。 無法通過GET請求中的參數以您現在正在執行的方式上傳文件。

+0

謝謝,但現在當我嘗試上傳一個錯誤時,他給了我下一個錯誤「不是有效的圖像」。 – Blade 2012-02-18 16:05:53

+0

很簡單,因爲您沒有上傳文件。上傳文件不能在GET請求中完成。問題是:爲什麼你不能使用表單上傳你的文件? – Mark 2012-02-18 16:07:37

+0

好的,謝謝。你能否向我推薦一個好的文檔(如果你知道的話)或類似的東西,以便更好地理解我必須做的事情? – Blade 2012-02-18 16:09:19

1

,根本無法工作,因爲你無法通過發送$_GET[]變量上傳圖片網址。

正如你可以在upload.php頁面看到的,該文件通過$_FILES['image']在php頁面中檢索。

如果將其更改爲$_GET['image']並重試使用您建議的get變量發佈鏈接,則可能會看到文件的路徑,但它只能作爲字符串類型而不是實際上傳的文件目的。

1

如果您需要將東西發佈到Web表單(而不是GET,這就是您在這裏做的),您不能只將指定的數據指定爲URL的一部分。

看看這些HTTP方法(GET和POST)來了解差異。

在你的應用程序中,你需要做的是將東西發佈到URL。根據您用於編程的工具,您應該瞭解如何通過POST發送數據。

此外,請嘗試查看curl(或libcurl)的實現是否可用於您的開發平臺。

相關問題