Asp.Net - Ajax File Upload Using HTTPHandler using C#.Net,VB.Net

By
Advertisement
ASPX Code:

<!DOCTYPE html>
<html>
<head runat="server">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" CssClass="file-upload-dialog" />
        <asp:Button runat="server" ID="btnUpload" CssClass="btn upload" Text="Upload" />
    </div>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#aspnetForm').attr("enctype", "multipart/form-data");
        });

        $('#<%= btnUpload.ClientID %>').on('click', function (e) {
            e.preventDefault();
            var fileInput = $('#<%= FileUpload1.ClientID %>');
            var fileData = fileInput.prop("files")[0];   // Getting the properties of file from file field
            var formData = new window.FormData();                  // Creating object of FormData class
            formData.append("file", fileData); // Appending parameter named file with properties of file_field to form_data

            $.ajax({
                url: 'FileUpload.ashx',
                data: formData,
                processData: false,
                contentType: false,
                type: 'POST',
                success: function (data) {
                    //Success call back here
                },
                error: function (errorData) {
                   //error message
                }
            });
        });
    </script>
    </form>
</body>
</html>


FileUpload.ashx

<%@ WebHandler Language="C#" Class="FileUpload" %>

using System;
using System.Web;
using System.IO;


public class FileUpload : IHttpHandler {
   
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "multipart/form-data";
        context.Response.Expires = -1;
        try
        {
            HttpPostedFile postedFile = context.Request.Files["file"];
            string savepath = HttpContext.Current.Server.MapPath("~/Images/");
            var extension = Path.GetExtension(postedFile.FileName);

            if (!Directory.Exists(savepath))
                Directory.CreateDirectory(savepath);

            var id = Guid.NewGuid() + extension;
            if (extension != null)
            {
                var fileLocation = string.Format("{0}/{1}",savepath,id);
                postedFile.SaveAs(fileLocation);
                context.Response.Write(fileLocation);
                context.Response.StatusCode = 200;
            }
        }
        catch (Exception ex)
        {
            context.Response.Write("Error: " + ex.Message);
        }
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}


FileUpload.ashx using VB.Net

Imports System.Web
Imports System.IO


Public Class FileUpload
    Implements IHttpHandler

    Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest
        context.Response.ContentType = "multipart/form-data"
        context.Response.Expires = -1
        Try
            Dim postedFile As HttpPostedFile = context.Request.Files("file")
            Dim savepath As String = HttpContext.Current.Server.MapPath("~/Images/")
            Dim extension = Path.GetExtension(postedFile.FileName)

            If Not Directory.Exists(savepath) Then
                Directory.CreateDirectory(savepath)
            End If

            Dim id = Convert.ToString(Guid.NewGuid()) & extension
            If extension IsNot Nothing Then
                Dim fileLocation = String.Format("{0}/{1}", savepath, id)
                postedFile.SaveAs(fileLocation)
                context.Response.Write(fileLocation)
                context.Response.StatusCode = 200
            End If
        Catch ex As Exception
            context.Response.Write("Error: " & ex.Message)
        End Try
    End Sub

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class

0 comments:

Post a Comment

Online Casino