• 附件上传功能-01


    1、前台页面

    1 <div class="input-group" style="100%">
    2                             <input type="file" id="file" name="myfile"  class="form-control" />
    3                             <span class="input-group-btn">
    4                                 <button id="btn-fileUpload" class="btn btn-success" type="button">上传</button>
    5                             </span>
    6                         </div>
    7                         <div style="display:none;" id="div-progress"><progress id="progressBar" value="0" max="100"></progress><span id="percentage"></span></div>

    css样式基于
    Bootstrap v3.3.7 (http://getbootstrap.com)

    2、JavaScript Code

    $("#btn-fileUpload").on('click', function () {
                        var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
                        var FileController = settings.apiUrl + "/Version/UploadFile"; // 接收上传文件的后台地址
                        // FormData 对象
                        var form = new FormData();
                        // form.append("author", "hooyes");                        // 可以增加表单数据
                        form.append("file", fileObj);                           // 文件对象
                        // XMLHttpRequest 对象
                        var xhr = new XMLHttpRequest();
                        xhr.open("post", FileController, true);
                        xhr.onload = function (result) {
                            var response = $.parseJSON(result.target.response);
                            $("#hidPathUrl").val("/Upload/Version/" + response.context);
                            tincher.message(response.message);
                        };
                        xhr.upload.addEventListener("progress", function (evt) {
                            $("#div-progress").show();
                            var progressBar = document.getElementById("progressBar");
                            var percentageDiv = document.getElementById("percentage");
                            if (evt.lengthComputable) {
                                progressBar.max = evt.total;
                                progressBar.value = evt.loaded;
                                percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
                            }
                        }, false);
                        xhr.send(form);
                    });

    3、C# API

            /// <summary>
            /// 数据包、app应用安装包上传
            /// </summary>
            /// <param name="imageid">categroy由前端传过来</param>
            /// <returns></returns>
            [AllowAnonymousAttribute]//允许所有请求
            [HttpPost]
            [Route("api/Version/UploadFile")]
            public HttpResponseMessage UploadFile()
            {
                try
                {

                    HttpRequest request = System.Web.HttpContext.Current.Request;
                    HttpFileCollection fileCollection = request.Files;
                    if (fileCollection.Count > 0)
                    {
                        //获取WebApi项目根目录指定的文件夹(记住要给IUSER完全的控制权限,这样IIS才能把文件写到那个文件夹)
                        string uploadFolderPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Upload/Version/");

                        //如果路径不存在,创建路径
                        if (!Directory.Exists(uploadFolderPath))
                            Directory.CreateDirectory(uploadFolderPath);
                        // 获取文件
                        HttpPostedFile httpPostedFile = fileCollection[0];
                        string fileExtension = Path.GetExtension(httpPostedFile.FileName);// 文件扩展名
                        string fileName = httpPostedFile.FileName;// 名称
                        if (fileName.Contains("\"))
                        {
                            var arr = fileName.Split(new string[] { "\" }, StringSplitOptions.RemoveEmptyEntries);
                            fileName = arr[arr.Length - 1];
                        };
                        var exts = fileName.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
                        var ext = exts[exts.Length - 1];
                        var strs = new string[] { "apk", "zip" };
                        if (!strs.Contains(ext))
                        {
                            return Error(0, "上传失败", "只允许上传apk、zip格式文件");
                        }
                        string filePath = uploadFolderPath + fileName;// 上传路径
                        httpPostedFile.SaveAs(filePath);
                        return Success(1, "上传成功", fileName);
                    }
                    else
                    {
                        return Error(0, "上传失败", null);
                    }
                }
                catch (Exception ex)
                {
                    LogManager.GetInstance("txt").Error("上传异常->" + ex.Message);
                    return Error(0, "发生异常", ex.Message);
                }
            }
  • 相关阅读:
    SQL server 2008 建立新用户
    2021.3.22-刷题 (移位)
    2021.3.17刷题-分割回文串
    2021.3.16 刷题--组合总和||(一种组合下元素不可重复选取)
    2021.3.15刷题-组合总和(元素可重复选取)
    2021.3.14刷题-设计哈希映射
    2021.3.13刷题-用拉链法设计哈希集合
    2021.3.12刷题-验证二叉树的前序序列化
    2021.3.11刷题-(删除二叉搜索树中的节点)
    2021.2.28刷题 回溯-电话字母组合
  • 原文地址:https://www.cnblogs.com/gotoschool/p/13883557.html
Copyright © 2020-2023  润新知