雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網!

ASP.NET

當前位置:主頁 > 網絡編程 > ASP.NET >

asp.net利用ashx文件實現文件的上傳功能

來源:本站原創(chuàng)|時間:2020-01-11|欄目:ASP.NET|點擊:

原來以為文件上傳是一個比較簡單的功能,結果搞了一個晚上才搞定~這里主要介紹兩種方法實現。

方法一:Form表單提交

html代碼:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>上傳文件</title>
  <script src="Scripts/jquery-1.11.3.min.js"></script>
</head>
<body>
  <form action="UploadHandler.ashx" method="post" enctype="multipart/form-data">
    <input id="file_upload" name="file_upload" type="file" />
    <input id="btn_upload" type="submit" value="上傳" />
  </form>
</body>
</html>

UploadHandler.ashx代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1
{
  /// <summary>
  /// UploadHandler 的摘要說明
  /// </summary>
  public class UploadHandler : IHttpHandler
  {
    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/plain";

      HttpPostedFile file = context.Request.Files["file_upload"];
      string filePath = context.Server.MapPath("~/UploadFiles/") + System.IO.Path.GetFileName(file.FileName);
      file.SaveAs(filePath);

      context.Response.Write("上傳文件成功");
    }

    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }
}

該方法雖然能夠實現文件的上傳,但是form表單提交之后整個頁面就刷新了,如果要無刷新上傳文件的話,就要使用ajax了。

方法二:jquery + ajax無刷上傳

html代碼:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>上傳文件</title>
  <script src="Scripts/jquery-1.11.3.min.js"></script>
</head>
<body>
  <input id="file_upload" name="file_upload" type="file" />
  <input id="btn_upload" type="button" value="上傳" />

  <script>
    $(document).ready(function ()
    {
      $('#btn_upload').bind('click', function ()
      {
        var formData = new FormData();
        formData.append('upload_file', $('#file_upload')[0].files[0]);
        $.ajax({
          url: 'UploadHandler.ashx',
          type: 'post',
          data: formData,
          contentType: false,
          processData: false,
          success: function (msg)
          {
            if (msg == "Yes")
            {
              alert('文件上傳成功');
            }
            else
            {
              alert('文件上傳失敗');
            }
          }
        })
      });
    });
  </script>
</body>
</html>

UploadHandler.ashx代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1
{
  /// <summary>
  /// UploadHandler 的摘要說明
  /// </summary>
  public class UploadHandler : IHttpHandler
  {

    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/plain";

      if (context.Request.Files.Count > 0)
      {
        HttpPostedFile file = context.Request.Files["upload_file"];
        string filePath = context.Server.MapPath("~/UploadFiles/") + System.IO.Path.GetFileName(file.FileName);
        file.SaveAs(filePath);
        context.Response.Write("Yes");
      }
      else
      {
        context.Response.Write("No");
      }
    }

    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }
}

個人更推薦方法二,運行結果如下圖所示:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

上一篇:淺談MVC框架的優(yōu)點(翻譯)

欄    目:ASP.NET

下一篇:NLog路由規(guī)則和上下文信息知識點總結

本文標題:asp.net利用ashx文件實現文件的上傳功能

本文地址:http://www.jygsgssxh.com/a1/ASP_NET/10840.html

網頁制作CMS教程網絡編程軟件編程腳本語言數據庫服務器

如果侵犯了您的權利,請與我們聯系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網 版權所有