How can I preview the uploaded image (don!) And then save its url?

I want to upload an image but first I want to preview the image and then when the user clicks on another asp:button

, save the image.

for the preview part, i use below code:

<script src="//code.jquery.com/jquery.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script>
    jQuery(document).ready(function ($) {
        $('#image').on('change', function (event) {

            var image = this.files[0]; 
            $('#singlePreview').html(''); 
            var reader = new FileReader();

            reader.onload = function (e) { 
                $('<img src="' + e.target.result + '" class="thumbnail img-responsive" width="150" alt="Loading..">').appendTo($('#singlePreview'));
            }

            reader.readAsDataURL(image);
        });
    });
</script>

      

& in HTML format:

<div class="form-group">
     <label for="image">image</label>
     <input type="file" id="image" accept="image/*" />
</div>
<div id="singlePreview"></div>

      

but now I don't know how to save the downloaded image url. because I don't know anything about JavaScript or jquery ...

I know that this.files[0]

is my address. but I want to use it in the code behind (C #).

+3


source to share


1 answer


You can make ajax call to load images

 // var file;

    $('#image').on('change', function (event) {
        var image = this.files[0]; 
        $('#singlePreview').html(''); 
        var reader = new FileReader();

        reader.onload = function (e) { 
            $('<img src="' + e.target.result + '" class="thumbnail img-responsive" width="150" alt="Loading..">').appendTo($('#singlePreview'));
        }
        reader.readAsDataURL(image);
        //file=this.files[0];
    });

    //This is your button click
    $("#btnUpload").on('click',function(){
           uploadFile();
    });

    function uploadFile() {
         var formData = new FormData();
         formData.append('file', $('#image')[0].files[0]);

          $.ajax({
                type: 'post',
                url: 'pathTo/genericHandler.ashx',
                data: formData,
                success: function (status) {
                     alert("Success")
                     },
                 error function (status) {
                     alert("Failed!");
                     },
                processData: false,
                contentType: false
            });
    }

      




Code: First, you need to add Generic Handler (ashx file) to your application. Below code will save uploaded file

public void ProcessRequest(HttpContext context)
{
    context.Response.ContentType = "text/plain";
    try
    {
        string dirFullPath = HttpContext.Current.Server.MapPath("~/MediaUploader/");
        string[] files;
        int numFiles;
        files = System.IO.Directory.GetFiles(dirFullPath);
        numFiles = files.Length;
        numFiles = numFiles + 1;

        string str_image = "";

        foreach (string str in context.Request.Files)
        {
            HttpPostedFile file = context.Request.Files[str];
            string fileName = file.FileName;
            string fileExtension = file.ContentType;
            if (!string.IsNullOrEmpty(fileName))
            {
                fileExtension = Path.GetExtension(fileName);
                str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension;
                string pathToSave = HttpContext.Current.Server.MapPath("~/MediaUploader/") + str_image;
                file.SaveAs(pathToSave);
            }
        }
        // database record update logic here  ()
        context.Response.Write(str_image);
    }
    catch (Exception ac) 
    { 

    }
}

      

Also check this article on How to Publish Data to Generic Handler in Asp.net

0


source







All Articles