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);//对字符串进行编码

  • 相关阅读:
    位运算
    LeetCode(230):二叉树中的第K小元素
    LeetCode(69):二分法求平方根
    TCP如何保证传输可靠性
    2种方法(递归+BFS)求二叉树的最小/最大深度
    自动生成Mapper文件(基于Mybatis Maven插件)
    Git的使用
    Java关键字及其作用详解
    Vagrant安装Centos/7
    java servlet 几种页面跳转的方法及传值
  • 原文地址:https://www.cnblogs.com/yyjspace/p/11675591.html
Copyright © 2011-2022 走看看