文件上傳---利用表單提交


上次我們介紹了插件上傳文件的方法,配合我們的一般處理程序處理文件,很強大。介紹——》文件上傳(插件版)

源碼:https://github.com/SeaLee02/FunctionModule     UploadFiles/WebDemo/UpControl2/UploadDemo.aspx   源碼

ListJson  DLL文件和JS:點擊下載

這次我們介紹我們利用ASP.NET里面頁面自帶的form表單來上傳文件

頁面:

前台頁面

需要在form里面添加一個屬性,沒有的話就不能上傳別的格式

 

  <div class="group">
            <label class="title">上傳</label>
            <div class="controls ">
                <ul class="filebox">
                    <li class="txtfilename">
                       <asp:TextBox runat="server" ID="txtTypeImg" CssClass="input02"></asp:TextBox>
                    </li>
                    <li class="btnfilea"><a href="javascript:void(0)" onclick="btnfileaclick($(this))" class="btnfilebtn">上傳圖片</a>
                    </li>
                    <li class="fileinput">
                        <input type="file" name="fileuploadico" id="fileuploadico" onchange="fileonchange($(this),'myfrom')" />
                    </li>
                </ul>
            </div>
        </div>
        <script src="../JS/jquery-1.11.0.min.js"></script>
        <script src="../JS/UpControl2/jquery.form.min.js"></script>  <%--form表單提交,不能少--%>
        <script src="../JS/UpControl2/jquery.leadinupload.js"></script> <%--腳本處理 --%>

然后就沒有了,似乎看起來很簡單。

我們來理解理解樣式,

我們點擊上傳圖片的時候會觸發 btnfileaclick($(this))  ,這個方法,我們封裝在最后一個js文件里面了。

我們來看看最后一個js文件

//當我點擊上傳的時候,這個事件觸發,然后主動讓下面的事件發生
var btnfileaclick = function ($this) {

    $this.parent().siblings(".fileinput").find("input[type=file]").click();

}


var fileonchange = function ($this,formId) {

    var fileid = $this.attr("id"); //文件上傳ID
    var txtid = $this.parent().siblings(".txtfilename").find("input[type=text]").attr("id"); //路徑ID
    //formId是form的Id   ajaxSubmit的前提需要引用jquery.form.min.js
    $("#" + formId).ajaxSubmit({
        beforeSubmit: function (formData, jqForm, options) {
        },
          uploadProgress: function (event, position, total, percentComplete) { //顯示進度的

           //console.log("pos:" + position + ",total:" + total + ",percebt:" + percentComplete);       //position:當前傳了多少,total:中共的大小,percentComplete :百分比
            },success: function (data) {

 $("#" + data.txtName).val(data.filePath); //文本框賦值 data有id和value  }, error: function (data, status, e) { alert("上傳失敗"); }, url: "/Tools/Update.ashx", type: "post", //post提交  data: { fileid: fileid, txtid: txtid }, dataType: "json", timeout: 60000 }); }

所以我們就得去看我們的Tools/Update.ashx了

 

   context.Response.ContentType = "text/plain";
            //post提交
            string fileid = context.Request["fileid"].ToString();//上傳控件ID
            string txtid = context.Request["txtid"].ToString();//文本框ID

            HttpPostedFile file = context.Request.Files[fileid]; //得到上傳文件
            string uploadpath = HttpContext.Current.Server.MapPath("/UplaodFileds/");//絕對路徑

            //獲取擴展名  只有知道完全路徑才能用Path來獲取
            string fileExtension = System.IO.Path.GetExtension(file.FileName);
            string _NewFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + fileExtension;//新名字

            string _Folder = DateTime.Now.ToString("yyyyMMdd");//文件夾
            string _NewPath = uploadpath + _Folder + "\\";
            if (file != null)
            {
                if (!Directory.Exists(_NewPath)) //判斷文件夾是否存在 不在就創建一個
                {
                    Directory.CreateDirectory(_NewPath);
                }
                file.SaveAs(_NewPath + _NewFileName); //保存
            }
             
            JsonData data = new JsonData();  //數據轉型  需要引用ListJson

            data["txtName"] = txtid;
            data["filePath"] = "/UplaodFileds/" + _Folder + "/" + _NewFileName;

            // 如果不想調用上面的類就返回一個字符串格式的Json數據
            // "{\"txtName\": \"" + txtid + "\", \"filePath\": \"" + "/UplaodFileds/" + _Folder + "/" + _NewFileName + "\"}"


            //返回json格式 txtName:"文本框ID",filePath:"上傳文件的路徑"
            
            context.Response.Write(data.ToJson());

 


免責聲明!

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



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