【发布时间】:2016-01-10 21:11:17
【问题描述】:
好的,假设我们有一个表单,其中包含一个简单的文件上传输入
<form action="index.php" method="post" enctype="multipart/form-data">
<input name="image_file" type="file" />
<input type="submit" name="submit-btn" value="Upload" />
</form>
然后是 index.php 文件
// check $_FILES['ImageFile'] not empty
if(!isset($_FILES['image_file']) || !is_uploaded_file($_FILES['image_file']['tmp_name'])){
die('Image file is Missing!'); // output error when above checks fail.
}
//uploaded file info we need to proceed
$image_name = $_FILES['image_file']['name']; //file name
$image_size = $_FILES['image_file']['size']; //file size
$image_temp = $_FILES['image_file']['tmp_name']; //file temp
$image_size_info = getimagesize($image_temp); //get image size
if($image_size_info){
$image_width = $image_size_info[0]; //image width
$image_height = $image_size_info[1]; //image height
$image_type = $image_size_info['mime']; //image type
}else{
die("Make sure image file is valid!");
}
然后我尝试重新调整文件大小
switch($image_type){
case 'image/png':
$image_res = imagecreatefrompng($image_temp);break;
case 'image/gif':
$image_res = imagecreatefromgif($image_temp); break;
case 'image/jpeg': case 'image/pjpeg':
$image_res = imagecreatefromjpeg($image_temp); break;
default:
$image_res = false;
}
现在我想将图像输出到用户的浏览器而不存储文件。 这就是我尝试这样做的原因
$data = base64_encode(file_get_contents($_FILES['image_file']['tmp_name']));
但是我觉得这里我的逻辑有问题,因为它没有输出图片,反正我最终想要的是像下面这样回显图片。
switch($image_type){
case 'image/png':
echo '<img src="data:image/png;base64,"'.$data.' alt="" />'; break;
case 'image/gif':
echo '<img src="data:image/gif;base64,"'.$data.' alt="" />';break;
case 'image/jpeg': case 'image/pjpeg':
echo '<img src="data:image/jpeg;base64,"'.$data.' alt="" />';break;
}
有人能看到失败吗?
【问题讨论】:
标签: php html file-upload base64