zoukankan      html  css  js  c++  java
  • IE与Google中文件上传、导出文件区别

    一、文件上传

    IE中file会把文件所在物理路径带上 后台用

    HttpFileCollection files = HttpContext.Current.Request.Files;

     foreach (string key in files.AllKeys){

    HttpPostedFile file = files[key];

    var fileName = file.FileName;

    string pattern = "[\[ \] \^ \-_*×――(^)$%~!@#$…&%¥—+=<>《》!!???::•`·、。,;,;"‘’“”-]";
    fileName = Regex.Replace(fileName, pattern, "_");//过滤特殊字符
    var filePath = (uploadPath + fileName).Replace(@"/", @"");
    string tmpRootDir = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath.ToString());
    string fileSavePath = tmpRootDir + filePath;
    //文件存在即删除
    if (File.Exists(fileSavePath))
    {
    File.Delete(fileSavePath);
    }
    file.SaveAs(fileSavePath);

    }

    此时Google浏览器没有问题 但是IE会提示找不到“x:xx文件夹下文件” 。

    所以要把var fileName = file.FileName;改成Path.GetFileName(file.FileName);//获取文件名

    二、文件导出乱码

    Workbook wb = new Workbook();

    var fileName = "空房房间_" + DateTime.Now.ToString("yyyy-MM-dd") + ".xls";
    string filePath = sPath + "\" + fileName;
    wb.Save(filePath);
    var stream = FileToStream(filePath);
    HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    result.Content.Headers.ContentDisposition.FileName = fileName;

    这样Google不会乱码 但是IE会 所以要加上 fileName = HttpUtility.UrlEncode(fileName);//对字符串进行编码

  • 相关阅读:
    指定的架构无效。错误: CLR 类型到 EDM 类型的映射不明确
    win7IIS错误修改路径最全的
    如何设置textarea光标默认为第一行第一个字符
    我的Hexo网站
    Leetcode Round 4 记录
    几何编程题
    Leetcode Round 3 记录
    几何概型
    Roman Number & Integer
    Single Number
  • 原文地址:https://www.cnblogs.com/yyjspace/p/11675591.html
Copyright © 2011-2022 走看看