是否可以在上传之前显示tmp文件夹中的图像?
问题描述:
我想在用户上传到服务器之前向用户显示一个图像,以确保该图像是用户想要上传的图像。是否可以在上传之前显示tmp文件夹中的图像?
我试图用$_FILES['name']['tmp_name']
做到这一点,并把它放在标签中,但没有任何反应。
<form action='' method='POST' enctype="multipart/form-data">
<header class='pageHeading'>Kop afbeedling toevoegen</header>
<section class='body'>
<div class='inputFrame'>
<img src="<?php if(isset($_FILES['image']['tmp_name'])){echo $_FILES['image']['name'];}?>"/>
<div class='input'>
<div class="cellFrame">
<div class="inputHeading">Afbeelding uploaden</div>
<div class="frame">
<div class="frameAlign">
<div class="displayFlie">
<input type='file' name='image'/>
</div>
<button name='upload' class='btnUpload btn'>Upload</button>
<div class="clr"></div>
</div>
</div>
</div>
</div>
<div class="clr"></div>
</div>
</form>
答
您是否尝试过直接从/ tmp文件夹读取文件?当然,这只能在上传之后发生,而不是之前。所以你必须在将文件移动到它的destined文件夹之前做这件事,但是在上传之后。
readfile($_FILES["name"]["tmp_name"]);
答
提交图像后,它已经上传到服务器的临时文件中。如果您需要显示该临时文件中的图像内容,则需要执行一个脚本来读取该文件并使用正确的标题输出该文件。这里有一个例子:
header('Content-Type: image/x-png');
readfile($_FILES['name']['tmp_name']);
exit();
答
你有两种方法来做到这一点。
首先是使用JavaScript代码来显示上传到服务器之前预览,您可以检查这个答案:Image Upload with Preview and Delete
二是要上传的图片,并从服务器中检索缩略图在客户方显示,您可以检查这个帖子:http://www.sitepoint.com/image-upload-example/
答
可以使用JS在这里看到你的问题的解决方案: Preview an image before it is uploaded
正如你可以在该线程看到有针对IE和FF/Chrome的不同的解决方案。所以照顾这一点。
答
简单的解决方案 - 抓住你的图像数据转换为Base64和输出在当前视图,这样你就不会需要将当前TMP图像复制到一个公用loction-像
$imageData = file_get_contents($_FILES['image']['tmp_name']); // path to file like /var/tmp/...
// display in view
echo sprintf('<img src="data:image/png;base64,%s" />', base64_encode($imageData));
显示你的代码,只需需要像你说的那样显示文件格式tmp,所以你的代码必须有错误 – Sal00m 2014-08-29 09:01:53
tmp_name(整个$ _FILES)在上传之后,而不是之前。 – 2014-08-29 09:04:51
检查http://khantmontu.blogspot.in/2012/08/display-image-preview-before-it-upload.html和http://stackoverflow.com/questions/16207575/how-to-preview-a- image-before-and-after-upload – Jenz 2014-08-29 09:05:29