繁体   English   中英

如何在不使用FileReader的情况下预览图像上传

[英]How to preview image upload without using FileReader

有没有不使用FireReader预览图像上传(或伪造图像)的解决方案?

您可以通过Ajax将文件发送到服务器(是可以的),然后让服务器向您发送该临时文件的URL并将其显示在前端。 只是避免使用File API有点麻烦,但是如果必须的话,这是我知道不依赖Flash的唯一方法...

即使是出于灵感,也请务必检查此插件

您还可以检查此线程,详细说明执行此操作的许多其他方式。

希望这可以帮助!

我已经为我的大学项目编写了以下代码,并且在我的本地服务器上可以正常工作。 这个想法是使用iframe作为ajax无法处理二进制数据,隐藏那些框架,隐藏php表单按钮并使用假按钮浏览和上传文件(在这种情况下,如果用户按下upload按钮,则替换用户的个人资料照片)。没有包含用于删除或丢弃按钮的代码,因为它仍在运行中,但是操作起来很简单,您可以运行ajax调用并调用一些php脚本来删除该临时文件。 代码很大,包括所有javascript / jquery,php和html代码段,请询问您是否有疑问。

JavaScript代码

var photoname;

$('#profilepic ').delegate('button#uploader1','click',function () {

if ($(this).prop("type") == "button") {
        $('#profilepic').attr('target','hiddenframe1').attr('action','/phpScripts/tempphoto.php');
        $('#uploadphoto').removeAttr('src');
        $('#profilepic input#photo').click();

        $(this).remove();
        $('<button type="submit" id="uploader2">Upload</button>').insertBefore($('#profilepic button#removephoto'));
        setTimeout(function () {
            var interval = setInterval(function () {
                if ($('#photo').val()) {
                    photoname = $('#photo').val().substring($('#photo').val().lastIndexOf('\\') + 1)
                   $('#profilepic input#submit').trigger('click', function (event) {})

                    setTimeout(function(){
                        $('#profilepic').css(
                            {
                        backgroundImage: 'url(/data/' + usr +'/'+photoname + ')'
                    })
                    },1000);
                    clearInterval(interval);
                }
            }, 200);
        }, 200);
    }


})

$('#profilepic ').delegate('#uploader2','click',function (){
    if ($(this).prop("type") == "submit") {

        $('#profilepic').attr('target','hiddenframe2').attr('action','/phpScripts/uploadphoto.php');
        $('#uploadphoto').attr('src','/phpScripts/uploadphoto.php');
        $('#profilepic input#submit').click();
        $(this).remove();
        $('<button type="button" id="uploader1">Browse</button>').insertBefore($('#profilepic button#removephoto'));
        document.getElementById('profilepic').reset();

    }
})

页面首次加载或刷新时的html文件

<form id="profilepic" target="hiddenframe1" action="/phpScripts/tempphoto.php" method="post" enctype="multipart/form-data" style="background-image: url(http://www.xyz.com/data/UDB/UDB.jpg); width: 180px; height: 180px; background-size: cover; background-position: 50% 50%; background-repeat: no-repeat no-repeat;">
    <input type="file" name="photo" id="photo" style="display: none;">
    <input type="submit" name="submit" value="Submit" id="submit" style="display: none;">
    <button type="button" id="uploader1" style="display: none;">Browse</button>
    <button type="button" id="removephoto" style="display: none;">Remove</button> 
</form>

<iframe id="tempphoto" name="hiddenframe1" src="/phpScripts/tempphoto.php"></iframe>

<iframe id="uploadphoto" name="hiddenframe2"></iframe>

php文件tempphoto.php

<?php

session_start();
$dt=$_SESSION['uname'];
$dest=$_SERVER['DOCUMENT_ROOT']."/data/$dt/";
$filename;

if ($_FILES["photo"]["error"] > 0)
{
  echo "Error: " . $_FILES["photo"]["error"] . "<br>";
}
else
{
 echo "Upload: " . $_FILES["photo"]["name"] . "<br>";
 echo "Type: " . $_FILES["photo"]["type"] . "<br>";
 echo "Size: " . ($_FILES["photo"]["size"] / 1024) . " kB<br>";
 echo "Stored in: " . $_FILES["photo"]["tmp_name"];
 move_uploaded_file($_FILES['photo']['tmp_name'], $dest.$_FILES['photo']['name']);
 $filename=$_FILES["photo"]["name"];
 }

?>

phpFile uploadphoto.php

<?php

session_start();
$dt=$_SESSION['uname'];
$dest=$_SERVER['DOCUMENT_ROOT']."/data/$dt/";
$filename;

if ($_FILES["photo"]["error"] > 0)
{
 echo "Error: " . $_FILES["photo"]["error"] . "<br>";
}
else
{
 echo "Upload: " . $_FILES["photo"]["name"] . "<br>";
 echo "Type: " . $_FILES["photo"]["type"] . "<br>";
 echo "Size: " . ($_FILES["photo"]["size"] / 1024) . " kB<br>";
 echo "Stored in: " . $_FILES["photo"]["tmp_name"];
 move_uploaded_file($_FILES['photo']['tmp_name'], $dest.$_FILES['photo']['name']);
 $filename=$_FILES["photo"]["name"];
}

 unlink($dest.$dt.".jpg");
 rename($dest.$filename,$dest.$dt.".jpg");
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM