• 文件上传


    FormData();支持ie10 ie10+

    前端:

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <meta charset="utf-8" />
        <script type="text/javascript">
    
            $.support.cors = true;
            var ApiUrl = "http://localhost:12745/";
            $(function () {
                $("#upload").click(function () {
                    $("#imgWait").show();
                    var formData = new FormData();
                    formData.append("myfile", document.getElementById("file1").files[0]);
                    $.ajax({
                        url: ApiUrl + "api/FileManage/UploadFile",
                        type: "POST",
                        data: formData,
                        /**
                        *必须false才会自动加上正确的Content-Type
                        */
                        contentType: false,
                        /**
                        * 必须false才会避开jQuery对 formdata 的默认处理
                        * XMLHttpRequest会对 formdata 进行正确的处理
                        */
                        processData: false,
                        success: function (data) {
                            if (data.status == "true") {
                                alert("上传成功!");
                            }
                            if (data.status == "error") {
                                alert(data.msg);
                            }
                            $("#imgWait").hide();
                        },
                        error: function () {
                            alert("上传失败!");
                            $("#imgWait").hide();
                        }
                    });
                });
            });
        </script>
    </head>
    <body>
        选择文件:<input type="file" id="file1" /><br />
        <input type="button" id="upload" value="上传" />
        <img src="wait.gif" style="display:none" id="imgWait" />
    </body>
    </html> 

     

    后端:

    /// <summary>
            /// 文件上传
            /// </summary>
            /// <returns></returns>
            [HttpPost]
            public HttpResponseMessage UploadFile()
            {
    
                
                HttpResponseMessage result = null;
                var httpRequest = System.Web.HttpContext.Current.Request;
                if (httpRequest.Files.Count > 0)
                {
                    try
                    {
                        string url = string.Empty;
                        foreach (string file in httpRequest.Files)
                        {
    
                            var postedFile = httpRequest.Files[file];
                            var filePath = System.Web.HttpContext.Current.Server.MapPath("~/Files/");
                            if (!Directory.Exists(filePath))
                            {
                                Directory.CreateDirectory(filePath);
                            }
                            postedFile.SaveAs(filePath + postedFile.FileName);
                            url += "Files/" + postedFile.FileName + ",";
                        }
    
                        result = Request.CreateResponse(HttpStatusCode.OK, url.Substring(0, url.Length - 1));
    
                    }
                    catch (Exception ex)
                    {
                        result = Request.CreateResponse(HttpStatusCode.OK, "error:" + ex.Message);
                    }
    
                }
                else
                {
                    result = Request.CreateResponse(HttpStatusCode.OK, "0");
                }
                return result;
            }
            /// <summary>
            /// 根据ID 下载文件
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            public HttpResponseMessage DownLoadFile(Guid id)
            {
    
                try
                {
                    DataTable dt = null; //BLL.Menu.GetModelByID(id);
                    if (dt.Rows.Count>0)
                    {
                        byte[] bytes = dt.Rows[0]["Icon"] as byte[];
                        if (bytes.Length>0)
                        {
                            //InputStream input = new ByteArrayInputStream(bytes);
                        }
                    }
                    var FilePath = @"C:UsersJone-pcDesktopQQ图片20170705090821.png";//System.Web.Hosting.HostingEnvironment.MapPath(@"C:UsersJone-pcDesktopQQ图片20170705090821.png");
                    var stream = new FileStream(FilePath, FileMode.Open);
                    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                    response.Content = new StreamContent(stream);
                    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    
                    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "Wep Api Demo File.jpg"
                    };
                    return response;
                }
                catch (Exception ex)
                {
                    return new HttpResponseMessage(HttpStatusCode.NoContent);
                }
    
            }
    
    
            /// <summary>
            /// 将文件上传到指定路径中保存
            /// </summary>
            /// <returns>上传文件结果信息</returns>
            [System.Web.Http.HttpPost]
            //[ValidateInput(false)]
            public HttpResponseMessage PostExcelData()
            {
                string info = string.Empty;
                try
                {
                    //获取客户端上传的文件集合
                    HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
                    //判断是否存在文件
                    if (files.Count > 0)
                    {
                        //获取文件集合中的第一个文件(每次只上传一个文件)
                        HttpPostedFile file = files[0];
                        //定义文件存放的目标路径
                        string targetDir = System.Web.HttpContext.Current.Server.MapPath("~/FileUpLoad/Product");
                        //创建目标路径
                        //ZFiles.CreateDirectory(targetDir);
                        if (!System.IO.Directory.Exists(targetDir))
                        {
                            Directory.CreateDirectory(targetDir);
                        }
                        string fullDir = System.IO.Path.Combine(targetDir + file.FileName);
                        //组合成文件的完整路径
                        //string path = System.IO.Path.Combine(targetDir, System.IO.Path.GetFileName(file.FileName));
                        //保存上传的文件到指定路径中
                        file.SaveAs(fullDir);
                        info = "上传成功";
                    }
                    else
                    {
                        info = "上传失败";
                    }
                }
                catch
                {
                    info = "上传失败";
                }
                return new HttpResponseMessage { Content = new StringContent(info, System.Text.Encoding.UTF8, "text/html") };
            }
    

      

     

     也可使用new ByteArrayContent(File.ReadAllBytes(imageUrl)) 试试

  • 相关阅读:
    AJAX下载,安装及使用(转)
    Vss命令行获取文件
    提升MOSS中运行权限
    数据库还原状态监控(查看事件查看器)
    MOSS常用部署命令stsadm (转)
    Linux系统常用命令
    VSTO Outlook 项目和文件夹的编程示例
    135 、137、139端口等主要用途
    WF编程 InvokeWebServiceActivity
    SQLSERVER2005 建立链接服务器
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/8624388.html
Copyright © 2020-2023  润新知