【发布时间】:2012-05-31 02:30:06
【问题描述】:
我在网上搜索了一个使用 ajax 进行 PHP 图片上传的代码。我在下面找到了代码。问题是我改变了一些东西(微小的调整)以使其在我的服务器上工作。最初它只是一个处理从表单发布的数据的 php 页面(不是类或函数)。我把它变成了课堂然后发挥作用。我现在正在关注 OOP。我认为在从过程到 OOP 的转换中做事的最好方法是将 $_FILES 和 $_POST 传递给一个方法并在内部处理它们。我认为这行不通。看看这个例子,请就如何前进提出建议。
function uploadImageChosen($_FILES, $_POST){
$path = "../uploads/images/";
$valid_formats = array("jpg", "png", "gif", "bmp");
$connectionInstance = new ConnectionClass();
$connectionInstance->connectToDatabase();
$imgName;
$imgURL;
$imgSize;
$imgDir = $_POST['directory'];
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$name = $_FILES['photoimg']['name'];
$imgSize = $_FILES['photoimg']['size'];
if(strlen($name))
{
list($txt, $ext) = explode(".", $name);
if(in_array($ext,$valid_formats))
{
if($size<(1024*1024))
{
$imgName = time().substr(str_replace(" ", "_", $txt), 5).".".$ext;
$tmp = $_FILES['photoimg']['tmp_name'];
if(move_uploaded_file($tmp, $path.$imgName))
{
$imgURL = $path.$imgName;
$connectionInstance->query("INSERT INTO imagesupload(id, title, url, size, directory) VALUES (null, '$imgName','$imgURL', '$imgSize', '$imgDir')");
//echo "<img src='uploads/".$imgName."' class='preview'>";
}
else{
echo "failed";
}
}else{
echo "Image file size max 1 MB";
}
}else{
echo "Invalid file format..";
}
}else{
echo "Please select image..!";
}
}//end of if
}//end of function
至于调用类函数的页面,这里是:
<?php
require_once("../classes/UploadImages.php");
$uploadInstance = new UploadImages();
$uploadInstance->uploadImageChosen($_FILES, $_POST);
//header("LOCATION:portfolio.php");
?>
非常感谢:)
【问题讨论】:
-
预期行为是什么,实际行为是什么?
-
图片移动到目录upload/images和db中存储的img数据
-
这是预期行为还是实际行为?
-
我下载的脚本是正确的。而且我没有改变逻辑而不是存储位置。所以我猜是真的
-
您没有提供太多信息,您是否遇到任何错误?文件没有保存吗?数据没有存到db吗?