gpt4 book ai didi

php - 使用命名空间从外部文件调用 PHP 类。

转载 作者:行者123 更新时间:2023-12-04 16:57:34 25 4
gpt4 key购买 nike

这是我第一次发帖,如果我没有选择,我真的不会发帖(我最不想做的事情就是无缘无故地烦人)。我已经研究这个脚本几天了,我用头撞着键盘试图找出它为什么不起作用。

文件 1:这是一个部分上传类,旨在从外部文件中使用。

<?php
namespace Tools\File;
class Upload {

protected $destination;
protected $max = 51200;
protected $messages = array();
protected $permitted = array('image/gif','image/jpeg', 'image/pjpeg', 'image/png');

public function __construct($path){
if (!is_dir($path) || !is_writable($path)) {
throw new \Exception ("$path must be a valid,writable directory");
}
$this->destination = $path;
}
public function upload(){
$upload = current($_FILES);
if ($this->checkFile($uploaded)){
$this->moveFile($uploaded);
}
}

protected function checkFile($file){
return true;
}
protected function moveFile ($file) {
$success = move_uploaded_file($file ['tmp_name'] , $this->destination . $file['name']);
if ($success){
$result = $file['name'] . 'was uploaded successfully';
$this->messages[] = $result;
}else{
$this->messages[] = 'Could not upload' . $file['name'];
}
}
public function getMessages(){
return $this->messages;
}
}

文件2:上传图片表格
<head>
<?php use Tools\File\Upload as FileUploader; ?>
</head>
<body>

<?php
if(isset($_POST['upload'])){
// difine the path to the upload folder
$destination = 'C:/Uploads/';
// Include upload class
require_once '../Tools/File/Upload.php';
// Creates new instance of the upload class as loader
try{
$loader = new FileUploader ($destination);
$loader->getMessages();
}catch(Exception $e){
echo $e->getMessages();
}
}
// Checks and echos result
if(isset($result)){
echo '<ul>';
foreach($result as $message){
echo "<li>$message</li>";
}
echo '</ul>';
}
?>
<form id="uploadImage" enctype="multipart/form-data" action="<?php htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<p>
<label for="image">Upload Image</label>
<input type="hidden" name="MAX_FILE_SIZE" value="<?= $max; ?>">
<input type="file" name="image" id="image">

</p>
<p>
<input type="submit" name="upload" value="upload" id="uplaod">
</p>
</form>
<!-- For checking the Files Super global-->

<pre>
<?php
if(isset($_POST['upload'])){ print_r($_FILES);}?>
</pre>

</body>

该表格工作正常。当在 File 2 本身内部调用“move_uploaded_file”函数时,文件被完美上传,但它似乎根本没有调用类。

我已经数不清我已经看过代码的次数了。重新安排并尝试我所知道的一切以使其正常工作。

任何帮助将不胜感激。
提前感谢您抽出宝贵时间。

最佳答案

您需要从第二个文件调用上传方法。否则,它将实例化 Upload 类,但不会触发任何上传事件。

try {
$loader = new FileUploader ($destination);
$loader->upload();
$loader->getMessages();
} catch(Exception $e){
echo $e->getMessages();
}

关于php - 使用命名空间从外部文件调用 PHP 类。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34189765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com