试图上传图像时,为什么会出现此错误?
问题描述:
当我使用接口访问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>
答
问题出在
if ($image['name'] == "")
$图像没有价值存在。
你正在做一个GET请求,所以如果你想知道什么形象变量,你应该使用
$_GET['image']
另一件事是,你正在做$图像= $ _FILES [“形象”];
$ _FILES将只能从发布请求中获得。 无法通过GET请求中的参数以您现在正在执行的方式上传文件。
答
,根本无法工作,因为你无法通过发送$_GET[]
变量上传图片网址。
正如你可以在upload.php页面看到的,该文件通过$_FILES['image']
在php页面中检索。
如果将其更改为$_GET['image']
并重试使用您建议的get变量发布链接,则可能会看到文件的路径,但它只能作为字符串类型而不是实际上传的文件目的。
答
如果您需要将东西发布到Web表单(而不是GET,这就是您在这里做的),您不能只将指定的数据指定为URL的一部分。
看看这些HTTP方法(GET和POST)来了解差异。
在你的应用程序中,你需要做的是将东西发布到URL。根据您用于编程的工具,您应该了解如何通过POST发送数据。
此外,请尝试查看curl(或libcurl)的实现是否可用于您的开发平台。
'http://myserver/upload.php?image ['name'] = F:\ Bilder \ 6.jpg'不是有效的PHP表达式。你究竟在什么地方,哪个地方进入了这条路线? – bos 2012-02-18 15:54:47
那么在我的浏览器中,为了试图给他一个图像,而不使用索引接口 – Blade 2012-02-18 15:56:07