【问题标题】:Image is getting uploaded to the folder but not getting displayed - php upload image图片正在上传到文件夹但未显示 - php上传图片
【发布时间】:2019-04-30 16:16:37
【问题描述】:

我正在尝试让用户从我的应用程序上传图像,并且我正在尝试将其上传到上传文件夹。我在下面显示了文件夹结构)。我能够正确地将图像保存在相应的文件夹中,并且还能够将图像文件的名称存储到数据库中,但是当我尝试将该图像显示到用户帐户中时,我无法使其可见。我想我搞砸了PATH。

文件夹结构:

  • htdocs
    • demo_app
      • 应用程序
        • 配置
          • config.php
        • 控制器
        • 核心
        • 观看次数
        • 型号
        • 上传
        • 用户图片
        • .htaccess
      • public(这是一个根文件夹)
        • 资产
          • CSS
          • js
          • 图片
          • 上传
          • 用户图片
        • index.php(这是根索引文件)
        • .htaccess
      • 供应商
      • .htaccess

所以对于上面的文件夹结构,我尝试了几件事:

  1. 上传图片到userImage文件夹(app/uploads/userImage/),我可以成功上传图片到这个文件夹。但是当我尝试显示它时,我没有得到任何图像。

  2. 我也尝试过上传图片到userImage文件夹(/public/assets/uploads/userImage/),但是这次我什至没有成功保存到这个文件夹中。

以下代码 sn-ps 来自我的两次尝试。

config.php

<?php 

 $site_url = '/';
 define('SITE_URL', $site_url);
 define('APP_ROOT',dirname(dirname(__FILE__))); // (Path to 'app' folder)
 define('URL_ROOT', 'http://localhost/demo-app');

 // Following path is to upload image to public/assets/uploads/) folder
 define('UPLOAD_PATH', 
 dirname(dirname(dirname(__FILE__)))."/public/assets/uploads");

控制器(userController.php)

$img_name = $_FILES["image"]["name"];
$upload_folder = APP_ROOT . "/uploads/userImage/" . $img_name;
move_uploaded_file($_FILES["image"]["tmp_name"], $upload_folder);

// The above uploading code works perfect for me to upload the image to app/uploads/userImage/ folder

// Following code doesn't work for me to upload it to the public/assets/uploads/userImage folder
 //Approach 2

 $upload_folder = UPLOAD_PATH . "/userImage/" . $img_name;
 move_uploaded_file($_FILES["image"]["tmp_name"], $upload_folder);

**查看 (index.php) **(app/views/users/index.php)

// Following for showing image from app uploads folder

  <?php $img_path = APP_ROOT . "/uploads/userImage/" . $user->image ?>
  <img src="<?php echo $img_path; ?>">

// Following for showing image from public uploads folder

  <?php $img_path = URL_ROOT . "/assets/uploads/userImage/" . $user->image ?>
  <img src="<?php echo $img_path; ?>">

我认为我的 PATH 有问题,所以如果有人可以帮助我解决这个问题,那就太好了。提前欣赏。

【问题讨论】:

    标签: php


    【解决方案1】:

    假设文件 userController.php 在控制器文件夹中。将您的第一部分更改为

    $img_name = $_FILES["image"]["name"];
    $upload_folder = "../uploads/userImage/" . $img_name;
    move_uploaded_file($_FILES["image"]["tmp_name"], $upload_folder);
    

    并将您的第二条路径更改为

    $upload_folder = "../../public/assets/uploads/userImage/" . $img_name;
    move_uploaded_file($_FILES["image"]["tmp_name"], $upload_folder);
    

    为了显示,你的文件在app/views/users/index.php,所以这样做

    <?php $img_path = "../../uploads/userImage/" . $user->image ?>
    <img src="<?php echo $img_path; ?>">
    
    <?php $img_path = URL_ROOT . "/assets/uploads/userImage/" . $user->image ?>
    <img src="<?php echo $img_path; ?>">
    

    【讨论】:

    • 我也试过了,但也没有用。而且在研究时我发现,要上传图像并将其保存到服务器上的文件夹中,我们需要使用目录路径(此处为 UPLOAD_PATH)并显示该图像,您需要提供该文件夹的 URL,就像您一样将提供给任何其他 css 或 js 或图像文件。
    • 我做了一个重大编辑@JohnCaverns 检查并告诉我
    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 2023-03-13
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多