当我使用界面转到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;
}
&GT;
和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>
答案 0 :(得分:1)
由于您无法通过网址发送$_GET[]
个变量来上传图片,因此根本无法使用。
正如您在upload.php页面中看到的那样,该文件是通过$_FILES['image']
在php页面中检索的。
如果您将其更改为$_GET['image']
并重试使用您建议的get变量发布链接,您可能会看到文件的路径,但它只能作为字符串类型而不是实际上传的文件对象。
答案 1 :(得分:1)
如果您需要将内容发布到网络表单(而不是GETting,这就是您在此处所做的事情),您不能仅指定要作为URL的一部分进行POST的数据。
了解这些HTTP方法(GET和POST)以了解其中的差异。
在您的应用中,您需要做的是将内容发布到网址。根据您用于编程的工具,您应该了解如何通过POST发送数据。
另外,尝试查看curl(或libcurl)的实现是否可用于您的开发平台。
答案 2 :(得分:1)
问题在于
if ( $image['name'] == "" )
$ image没有价值。
您正在执行get请求,因此如果您想知道图像变量是什么,则应使用
$_GET['image']
另一件事是你正在做$ image = $ _FILES [&#39; image&#39;];
$ _ FILES只能从帖子请求中获得。 无法通过GET请求中的参数以您现在的方式上传文件。