• WebAPI上传文件


    #region 上传文件
    /// <summary>
    /// 通过multipart/form-data方式上传文件
    /// </summary>
    /// <returns></returns>
    [HttpPost]
    public async Task<HttpResponseMessage> PostFile()
    {
    MessagesDataCodeModel json = new MessagesDataCodeModel(false, "无效参数", 401);

    try
    {
    // 是否请求包含multipart/form-data。
    if (!Request.Content.IsMimeMultipartContent())
    {
    logger.Error("上传格式不是multipart/form-data");
    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
    }

    string root = HttpContext.Current.Server.MapPath("/UploadFiles/");
    if (!Directory.Exists(HttpContext.Current.Server.MapPath("~/UploadFiles/")))
    {
    Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/UploadFiles/"));
    }

    var provider = new MultipartFormDataStreamProvider(root);

    StringBuilder sb = new StringBuilder(); // Holds the response body

    // 阅读表格数据并返回一个异步任务.
    await Request.Content.ReadAsMultipartAsync(provider);

    // 如何上传文件到文件名.
    foreach (var file in provider.FileData)
    {
    string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
    FileInfo fileinfo = new FileInfo(file.LocalFileName);
    //sb.Append(string.Format("Uploaded file: {0} ({1} bytes) ", fileInfo.Name, fileInfo.Length));
    //最大文件大小
    //int maxSize = Convert.ToInt32(SettingConfig.MaxSize);
    if (fileinfo.Length <= 0)
    {
    json.Success = false;
    json.Msg = "请选择上传文件";
    json.Code = 301;
    }
    else if (fileinfo.Length > ConfigHelper.MaxFileSize)
    {
    json.Msg = "上传文件大小超过限制";
    json.Code = 302;
    }
    else
    {
    string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
    //定义允许上传的文件扩展名
    //String fileTypes = SettingConfig.FileTypes;
    //if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
    //{
    // json.Msg = "图片类型不正确";
    // json.Code = 303;
    //}
    //else
    //{
    //String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
    //String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo);

    fileinfo.CopyTo(Path.Combine(root, fileinfo.Name + fileExt), true);
    json.Success = true;
    json.Msg = "操作成功";
    json.Code = 200;
    sb.Append("/UploadFiles/" + fileinfo.Name + fileExt);
    json.Data = sb.ToString();
    //}
    }
    fileinfo.Delete();//删除原文件
    }
    }
    catch (System.Exception e)
    {
    json.Success = false;
    json.Msg = "服务器无响应";
    json.Code = 500;
    logger.Error("PostFile()服务器错误", e);
    }
    return ToJsonTran.ToJson(json);
    }
    #endregion 上传文件

  • 相关阅读:
    零基础学习python_异常处理(32-33课)
    零基础学习python_pickle(31课)
    零基础学习python_文件(28-30课)
    安全测试3_Web后端知识学习
    安全测试2_Web前端知识学习
    安全测试1_Web知识简介
    659 为什么说服人那么难?(一个理智的人不要总试图改变别人的世界观,应该找机会颠覆自己的世界观)
    总结18,展望19
    typescript 的安装
    MVC4.0 解决Controllers与Areas中控制器不能同名问题
  • 原文地址:https://www.cnblogs.com/xsj1989/p/5234683.html
Copyright © 2020-2023  润新知