2

I wanted to know how to display a photo that the user uploads on a website using html and javascript. I tried using code I found on another stackoverflow question but it didn't work for me. Here is the code I tried in chrome, firefox and safari. Any help is appreciated

HTML:

<!DOCTYPE html>
<html>
<head>
    <link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
    <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script>
    <meta charset=utf-8 />
    <title>JS Bin</title>
    <!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <style>
    article, aside, figure, footer, header, hgroup,menu, nav, section {
        display: block;
    }
    </style>
</head>
<body>
    <input type='file' onchange="readURL(this);" />
    <img id="blah" src="#" alt="your image" />
</body>
</html>

Javascript:

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#blah')
                .attr('src', e.target.result)
                .width(150)
                .height(200);
        };
        reader.readAsDataURL(input.files[0]);
    }
}
3
  • The code works fine, however you have small problem which makes it not-working. It's easy to see if you debug your code. Commented Apr 20, 2018 at 13:31
  • Open the console and see if the action throws any error Commented Apr 20, 2018 at 13:33
  • thank you for your feedback Commented Apr 20, 2018 at 14:51

3 Answers 3

4

You can simply use pure JS to get this working.

function handleImageUpload() 
{

var image = document.getElementById("upload").files[0];

    var reader = new FileReader();

    reader.onload = function(e) {
      document.getElementById("display-image").src = e.target.result;
    }

    reader.readAsDataURL(image);

} 
<input id="upload" type="file" onChange="handleImageUpload()" />
<img id="display-image" src="" />

Sign up to request clarification or add additional context in comments.

Comments

1

Please check the below code snippet, I have tested it on Google chrome Version 66.0.3359.117 (Official Build) (64-bit) and it is working fine.

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#blah').attr('src', e.target.result).width(150).height(200);
        };
        reader.readAsDataURL(input.files[0]);
    }
}
<!DOCTYPE html>
<html>

<head>
    
    <meta charset=utf-8 />
    <title>JS Bin</title>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
    <!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
    <style>
        article,
        aside,
        figure,
        footer,
        header,
        hgroup,
        menu,
        nav,
        section {
            display: block;
        }

    </style>
</head>

<body>
    <input type='file' onchange="readURL(this);" />
    <img id="blah" src="#" alt="your image" />
</body>

</html>

Comments

0

Your code is working fine, I have tested it.

I think you forgot to link the javascript to your HTML source code.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.