2012-02-18 158 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)的实现是否可用于您的开发平台。