一般處理程序上傳圖片


(1). 首先創建一個用於上傳圖片的HTML模板,命名為ImageUpload.html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <meta charset="utf-8" />    
</head>
<body>
    <!--文件上傳必須設置enctype="multipart/form-data"-->
    <form method="post" enctype="multipart/form-data" action="ImageUpload.ashx">
        <input type="file" name="imgFile" />
        <input type="submit" value="上傳"/>
    </form>
</body>
</html>

模板中包含兩個input標簽,類型分別為“file”和“submit”,其中,form表單的method屬性必須為“post”,enctype為“multipart/form-data”。

(2). 在ImageUpload.html模板中判斷一下所上傳的文件是否為圖片:

<script src="../scripts/jquery-1.12.4.min.js"></script>
    <!--如果監聽到上傳的文件的后綴不是圖片,那就將file得到的內容設為空-->
    <script type="text/javascript">
        $(function () {
            $(":file").change(function () {
                var fileName = $(this).val();
                var ext = fileName.substr(fileName.lastIndexOf('.'));
                if (ext == ".jpeg" || ext == ".jpg" || ext == ".png" || ext == ".gif") {
                    return true;
                } else {
                    $(this).val("");
                }

            });
        });
    </script>

(3). 新建一個名為ImageUpload.ashx的一般處理程序,為保證上傳的文件是圖片,需要在后台再次判斷一下所傳文件的格式(因為瀏覽器中可以改前台代碼):

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

namespace ThreeLayerWebDemo.FileUpload
{
    /// <summary>
    /// ImageUpload 的摘要說明
    /// </summary>
    public class ImageUpload : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";
            //context.Response.Write("Hello World");
            //后台拿到上傳來的圖片(拿到名為imgFile的input標簽的文件)
            var file =context.Request.Files["imgFile"];

            //后台也要對拿到的數據是否為圖片進行校驗(因為前台可以通過瀏覽器改代碼,前台校驗完了需要后台再攔截一下)
            var ext=  Path.GetExtension(file.FileName);
            if (!(ext==".jpeg"||ext==".jpg"||ext==".png"||ext==".gif"))
            {
                context.Response.Write("shit,你傳的不是圖片");
                context.Response.End();
            }
            else
            {
                //上傳的文件保存到目錄(為了保證文件名不重復,加個Guid)
                string path = "/Upload/" + Guid.NewGuid().ToString() + file.FileName;
                file.SaveAs(context.Request.MapPath(path));//必須得是相對路徑

                //把圖片顯示到前端讓用戶看得到
                string str = string.Format("<html><head></head><body><img src='{0}'/></body></html>",
                    path);//必須得是絕對路徑!!!!
                context.Response.Write(str);
            }



        }

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

轉自:https://blog.csdn.net/asd358924810/article/details/78243446


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM