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;
        }
 

原文地址:https://www.cnblogs.com/AlbertSmith/p/9834683.html

时间: 2024-11-08 09:59:23

H5+上传注意要点及服务端代码的相关文章

h5上传视频到服务端,存到指定位置,url保存到数据库,最后以特定格式显示

一.视频上传到服务器,存到指定位置. 试过n个方法中,最最靠谱的一个: http://www.cnblogs.com/xdp-gacl/p/4200090.html 二.url保存到数据库 1.项目中新建一个jdbc包 新建类 package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i

Wince 6.0适用 .NET 使用HttpRequest的Post上传文件,服务端的Web API接收Post上传上来的文件 代码

//调用的示例 private string fileName = "InStorageData.csv"; string filePath = parentPath + CommonHelper.UPLOAD + "\\" + fileName;//文件的全路径含文件名称及扩展名 string strResult = CommonHelper.SendFile(filePath, new Uri(CommonHelper.strURL + "PostFo

图片上传客户端与服务端

//一万年太久,只争朝夕package uploadImg; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; /*建

01 ftp上传简单示例服务端

import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001)) server.listen() conn,addr = server.accept() #首先接收文件的描述信息的长度 struct_data_len = conn.recv(4) data_len = struct.unpack('i',struct_data_len)[0] # 通过文件信息的长度将文

c#大文件上传详解及实例代码

最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据.上传影音文件等.如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成. 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用

七牛云存储android客户端及java服务端代码编写

前一篇博客提到让我很伤心的c应用,由于是一款供用户上传图片的应用,因此必须解决图片存储问题,如果直接将图片存储至服务器,当用户上传图片较多,服务器空间将很快吃紧,同时也没有那么大的带宽,现实中我买的阿里云服务器是最低配置,数据盘才20G,带宽才1M,如果用这样配置的服务器做图片存储,那实在太扯了.于是很自然的想到用图片云存储服务器,通过不断查找资料,最后将目标定位在七牛云和又拍云.在做选择时,主要对比了两者之间的价格及技术优势,也看了很多相关话题讨论,个人认为这两者无论从技术方案还是产品价格,都

Photon Server 实现注册与登录(二) --- 服务端代码整理

一.有的代码前端和后端都会用到.比如一些请求的Code.使用需要新建项目存放公共代码. 新建项目Common存放公共代码: EventCode :存放服务端自动发送信息给客户端的code OperationCode : 区分请求和响应 ReturnCode : 服务端响应码 ParameterCode : 解析参数Toos/DicTool.cs : 数据基本上都是用Dictionary读取,这里工具话一下. 二.代码 Toos/DicTool.cs using System.Collection

Socket通信客户端和服务端代码

这两天研究了下Socket通信,简单实现的客户端和服务端代码 先上winfrom图片,客户端和服务端一样 服务端代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; usin

ASP.NET CORE的H5上传

做的CORE项目中用到H5上传,把以前的MVC代码复制过来得修改一下才能用在.NET CORE中 原文地址:https://www.cnblogs.com/niunan/p/9296954.html