【问题标题】:Display $_FILES['image'] after form submit表单提交后显示 $_FILES['image']
【发布时间】:2013-07-18 02:27:32
【问题描述】:

表单提交后如何显示上传的图片?提交表单后,它将是一个预览页面,所以我还没有将图像类型 BLOB 存储在 MySQL 中。如何显示 $_FILES['image']?

<?php

if(isset($_POST['submit'])) {

 //preview page

$info = getimagesize($_FILES['image']['tmp_name']);
$imagetype = $info['mime'];
$tmpname = $_FILES['image']['tmp_name'];
$fp = fopen($tmpname,'r');
$data = fread($fp,filesize($tmpname));
$data = addslashes($data);
fclose($fp);

} else {
?>

<form enctype="multipart/form-data" action="http://www.example.com/submit" method="POST">
<input type="file" name="image" value="" size="50" />
<input type="submit" name="submit" value="submit" />
</form>

<?php
}

?>

【问题讨论】:

标签: php


【解决方案1】:

如果您不想将图像存储在服务器上,可以这样预览:

<?php
if (isset($_FILES['image'])) {
    $aExtraInfo = getimagesize($_FILES['image']['tmp_name']);
    $sImage = "data:" . $aExtraInfo["mime"] . ";base64," . base64_encode(file_get_contents($_FILES['image']['tmp_name']));
    echo '<p>The image has been uploaded successfully</p><p>Preview:</p><img src="' . $sImage . '" alt="Your Image" />;
}

但如果你想把它存储在服务器上,只需存储它并显示它而不改变页面。

【讨论】:

  • 这听起来是个坏主意。我听说你可以很容易地用 JavaScript 做这样的事情。
【解决方案2】:

我还没有在 MySQL 中存储图像类型 BLOB。如何显示 $_FILES['image']?

与您存储它的方式完全相同。

【讨论】:

  • 使用标头('Content-type:image/$type');?
  • 使用你想要的任何标题。如果您从数据库或表单中获取此图像,则没有区别
【解决方案3】:

因为“tmp_name”可能暗示它是一个临时资源。将其保存到磁盘,然后显示,然后将其删除

 <?
 $preview_file = false;
 if(is_uploaded_file($tmpname) && $info=@getimagesize($tmpname)){
   $preview_file = "./tmp/tmp_preview.extension";
   move_uploaded_file( $tmpname, realpath($preview_file) );
 }
 if($preview_file){
   // show preview
 }

【讨论】:

  • mmh,可能依赖于 php.ini。我在 5.3.6 中使用它
猜你喜欢
  • 2013-12-20
  • 2013-02-14
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2018-11-05
  • 1970-01-01
相关资源
最近更新 更多