【问题标题】:PHP Copy image and load in HTMLPHP 复制图像并以 HTML 格式加载
【发布时间】:2016-04-08 12:21:24
【问题描述】:

我已将图片上传到文件夹:

/var/www/uploads/img.png

使用相对路径

../uploads/img.png

然后我使用以下代码加载图像:

$img = copy('../uploads/9', '/tmp/profile_picture');

返回真

我的谷歌搜索让我明白了这一点:

<img src="/tmp/profile_picture" alt="profile_picture" />

我已经尝试过上面有和没有.png 结尾的方法。还是不行。

我只需要拿出一张图片并显示在一个图片标签中,我总是知道我的图片的确切路径和文件名。

编辑

在这个帖子的第一个答案之后,我尝试了以下方法:

$image = '../uploads/9';

$info = getimagesize($image);

// output the image
header("Content-Disposition: filename={$image};");
header("Content-Type: {$info["mime"]}");
header('Content-Transfer-Encoding: binary');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');

readfile($image);

我在这里调用脚本:

<img src="profile_picture.php" alt="profile_picture" />

我得到 404。

我尝试了 $image 的各种路径

任何帮助表示赞赏。

【问题讨论】:

  • 不工作意味着什么
  • &lt;img src="uploads/img.png"/&gt;为什么要复制呢?
  • 你为什么不用&lt;img src="/uploads/img.png" alt="profile_picture" /&gt;?如果您在网站上以 / 开头,则表示 Web 服务器根目录,而不是您的本地文件系统根目录。

标签: php image path


【解决方案1】:

第 1 步:更正您对 copy() 的使用

使用:
$img = copy('/tmp/profile_picture', '../uploads/9'); 而是。

来自PHP.net docs,复制功能的格式为:

copy ( string $source , string $dest [, resource $context ] )

参数在哪里:
source » 源文件的路径。

dest » 目标路径。如果目标文件已经存在,则会被覆盖。

context » 使用 stream_context_create() 创建的有效上下文资源。


第二步(1):上传图片到网络可访问路径

您需要知道您的网络根目录。 考虑这个文件夹结构:
/var/www » 你的 www 根

/var/www/project1 » 你的 www 根目录

/var/www/project1/assets/img » 您项目的可公开访问的图像目录

然后将你的图片上传到上述路径:/var/www/project1/assets/img/img.png

并像这样使用图像(来自index.html):

&lt;img src="/assets/img/img.png" alt="Image"&gt;


第 2 (2) 步:或者将您的图像包装在一个 php 文件中

这需要一个自定义的 php 文件,并且在图像标签中使用。

示例:
image.php

<?php
$image = '/var/www/uploads/img.png';

$info = getimagesize($image);

// output the image
header("Content-Disposition: filename={$image};");
header("Content-Type: {$info["mime"]}");
header('Content-Transfer-Encoding: binary');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');

readfile($image);
?>


index.html

<img src="image.php" alt="Image">

说明

此选项只是将您的图像包装在 php 脚本中,而是调用该脚本。

如果图像无法公开访问和/或我必须做一些检查以查看当前用户是否值得访问图像,我会使用它。

::被大多数文件共享网络应用程序使用

【讨论】:

  • 我已经复制了你的脚本,它返回 404,我尝试使用与视图相同的 php 脚本
  • 你的答案的第一部分已经过时了,我认为你误解了。源是 uploads/9,目标是 /temp/9
【解决方案2】:

你可以这样做。

使用函数 sys_get_temp_dir() 将图像直接上传到临时文件夹。

然后

$path = '/tmp/profile_picture';
$imageData = file_get_contents($path);
// display in view
echo sprintf('<img src="data:image/png;base64,%s" />', base64_encode($imageData));

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 2011-01-12
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多