我在网上搜索了使用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");
?>
非常感谢:)
答案 0 :(得分:5)
$_POST
和$_FILES
是超全局数组,它们始终可用,并且在函数或方法中重新定义它们是一个坏主意。
您可以这样做:
$uploadInstance->uploadImageChosen();
..
function uploadImageChosen(){
$path = "../uploads/images/";
$valid_formats = array("jpg", "png", "gif", "bmp");
...
$name = $_FILES['photoimg']['name'];
...
或者,如果您需要本地范围内的副本,请执行以下操作:
$uploadInstance->uploadImageChosen($_FILES, $_POST);
..
function uploadImageChosen($files, $post){
$path = "../uploads/images/";
$valid_formats = array("jpg", "png", "gif", "bmp");
...
$name = $files['photoimg']['name'];
...
答案 1 :(得分:0)
尝试从IF语句中删除$_SERVER['REQUEST_METHOD'] == "POST"
,看看它的作用。
答案 2 :(得分:0)
上面的脚本存在一个在错误日志中未检测到的问题。我在实例化连接类时首先提出了这个问题。我应该创建另一个变量,它将接收用于查询工作的开放连接已解决,数据现在存在于数据库中。第二个问题是JPG格式不是可接受类型的数组,所以我添加了jpg(变体)。这使文件实际上转移到上传文件夹。感谢大家的支持,并对给您带来的不便表示抱歉:)