H5+上傳注意要點及服務端代碼


// 上傳文件
function upload(num) {
    console.log("num:" + num);
    console.log("headImg.src.:" + headImg.src);
    if(num == 0 && headImg.src.indexOf('img/header.png') > -1) {
        plus.nativeUI.alert("請添加頭像圖片文件!");
        return;
    }
    console.log("cardFrontImg.src.:" + cardFrontImg.src);
    if(num == 1 && cardFrontImg.src.indexOf('img/upload.png') > -1) {
        plus.nativeUI.alert("請添加身份證正面圖片文件!");
        return;
    }
    console.log("cardBackImg.src.:" + cardBackImg.src);
    if(num == 2 && cardBackImg.src.indexOf('img/upload.png') > -1) {
        plus.nativeUI.alert("請添加身份證反面圖片文件!");
        return;
    }
    console.log("開始上傳:")
    var wt = plus.nativeUI.showWaiting();
    var server = uri + "appupload/PostFile";
    console.log("upload url server:" + server);
    var task = plus.uploader.createUpload(server, {
            method: "POST"
        },
        function(t, status) { //上傳完成
            if(status == 200 || status == 201) {
                var strData = t.responseText;
                if(strData != "") {
//                    var data = strData.split(",");
//                    document.getElementById("relativeUrl").value = (data[0].split(":"))[1];
//                    document.getElementById("absoluteUrl").value = (data[1].split(":"))[1];
                    plus.nativeUI.alert("上傳成功!");
                }
                wt.close();
            } else {
                plus.nativeUI.alert("上傳失敗:" + status);
                wt.close();
            }
        }
    );
    task.addData("imageNum", num + "");//區分頭像 和 身份證
    task.addData("sys_app_secret", homecamp.data.qq007_secret);
    task.addData("sys_app_clientId", c.getClientId());
    task.addData("sys_app_token", localStorage.getItem("api_token"));
    task.addData("sys_app_id", homecamp.data.qq007_appid + "");
    //添加其他參數
    if(num == 0) {
        task.addFile(headImg.src, {
            key: "file"
        });
    }
    if(num == 1) {
        task.addFile(cardFrontImg.src, {
            key: "file"
        });
    }
    if(num == 2) {
        task.addFile(cardBackImg.src, {
            key: "file"
        });
    }
    task.start(); 
}

 

1.用plus.uploader.createUpload上傳文件經常要跟上其他參數,如上面代碼的

task.addData(key,value);就是添加POST的參數.
*重要的點事value要string類型的,js里面就直接這樣寫:

task.addData(key,value + "");
不然在服務端是接收不到參數的.

2.web api 服務端代碼:
        [HttpPost]
        public HttpResponseMessage PostFile()
        {
            string SaveTempPath = "";
            HttpResponseMessage result = null;
            var httpRequest = HttpContext.Current.Request;
            int imageNum = string.IsNullOrEmpty(httpRequest.Params["imageNum"]) ? 0 : int.Parse(httpRequest.Params["imageNum"]);
            switch (imageNum)
            {
                case 0://文件保存目錄路徑 
                    SaveTempPath = HomeCamp.Biz.Dict.SysConfig.GetValue("system_init", "imgHeaderSaveUrl");//頭像
                    break;
                case 1:
                case 2:
                    SaveTempPath = HomeCamp.Biz.Dict.SysConfig.GetValue("system_init", "imgIdCardSaveUrl");//身份證
                    break;
            };
            if (httpRequest.Files.Count > 0)
            {
                var docfiles = new List<string>();
                foreach (string file in httpRequest.Files)
                {
                    var postedFile = httpRequest.Files[file];
                    var filePath = HttpContext.Current.Server.MapPath("~/" + SaveTempPath + postedFile.FileName);
                    postedFile.SaveAs(filePath);

                    docfiles.Add(filePath);
                }
                result = Request.CreateResponse(HttpStatusCode.Created, docfiles);
                //數據庫操作
                #endregion
            }
            else
            {
                result = Request.CreateResponse(HttpStatusCode.BadRequest);
            }
            return result;
        }

 

 

 


免責聲明!

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



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