将临时目录中的图像显示给最终用户

时间:2015-07-08 10:20:04

标签: php html ajax image

我正在做图像旋转功能。我正在使用

旋转图像并保存到tmp目录中
$rotate = imagerotate($source, 90, 0);
$rotatedTmpFile = tempnam('/tmp', 'rotatedThumbnailImage');
imagejpeg($rotate, $rotatedTmpFile ,100);

文件在tmp文件夹中创建。但现在我想

  1. 阅读tmp目录的内容
  2. 生成tmp图像文件的网址
  3. 将该src作为回复发送回ajax call
  4. 使用Javascript:

    $.ajax({
        url: PAdmin.roateImageUrl,
        data: {
            mediaId: id[1],
            src: src
        },
        type: 'POST',
        success: function(response) {
            img.attr('src', response);
        }
    });
    
    1. 在上传到S3服务器之前向最终用户显示旋转的图像。
    2. 请帮忙。

3 个答案:

答案 0 :(得分:2)

我非常确定/ tmp无法直接通过您的网络服务器访问。您应该从/ tmp移动到docroot中的目录,或者直接在html中编码图像;使用

$mime = mime_content_type($rotatedTmpFile);
$data = file_get_contents($rotatedTmpFile);
exit('data:' . $mime . ';base64,' . base64_encode($data));

这应该作为image-src工作,但可能有点资源昂贵

答案 1 :(得分:2)

在@Sjon的帮助下获得了解决方案。

request."javax.servlet.error.exception"

在PAdmin.roateImageUrl:

  

注意:此代码中尚未处理异常。

$.ajax({
    url: PAdmin.roateImageUrl,
    data: {mediaId:id[1],src: src},
    type: 'POST',
    success: 
        function(response){
            img.attr('src',response);
        }
});

答案 2 :(得分:-1)

通常情况下,您可以使用move_uploaded_file()功能将旋转后的图像移动到某些临时图像上。网络可访问文件夹(例如" images/temp/")。

您将为图像生成一个随机名称(如果出于安全原因需要),只需将文件名附加到" /images/temp/"即可轻松获取URL。