【问题标题】:How to save file to physical path? [duplicate]如何将文件保存到物理路径? [复制]
【发布时间】:2018-01-16 16:03:01
【问题描述】:

我需要将画布图像保存到位于 C: 驱动器的物理地址。但我得到了

不支持给定路径的格式。

我就是这样做的。

string path = @"C:\tmp";

        string date = DateTime.Now.ToString("yy-MM-dd");
        date = date.Replace("-", "");
        string pathstr = Path.Combine(path, "JobData", "JSAttachments", date, jobsheetno);
        Directory.CreateDirectory(pathstr);

        string sketchData = Session["SketchData"].ToString();

        if (sketchData != "")
        {

            byte[] bytes = Convert.FromBase64String(sketchData.Split(',')[1]);
            sketchname = "Sketch" + DateTime.Now.ToString() + ".jpeg";
            sketchname = sketchname.Replace("/", "");
            sketchpath = Path.Combine(pathstr, sketchname);
            using (var imageFile = new FileStream(sketchpath), FileMode.Create)
            {
                imageFile.Write(bytes, 0, bytes.Length);
                imageFile.Flush();
            }

        }

草图路径字符串如下所示

C:\tmp\JobData\JSAttachments\180116\18011978\Sketch16012018 3:50:50 PM.jpeg

【问题讨论】:

  • 就像异常消息状态一样,有些字符不受支持。在您的情况下,: 字符。下次如果您收到此消息,请将您尝试使用的文件名复制/粘贴到文件名中(即尝试一些故障排除)。这也会立即产生同样的错误。
  • 是的。这就是问题所在。现在它起作用了。谢谢

标签: c# asp.net


【解决方案1】:

问题是您在文件路径中使用了不受支持的字符。不允许使用 :(冒号),您必须将 DateTime.Now.ToString() 替换为允许的其他格式。

这是一个更好的解决方案:

DateTime.Now.ToString("yyyy-M-dd--HH-mm-ss")

它仍然可以确保您的文件可以按名称排序并可供用户读取

【讨论】:

    【解决方案2】:

    如您所见,DateTime.Now.ToString() 返回类似16012018 3:50:50 PM 的字符串,其中文件系统不支持冒号。

    像第二行一样使用格式说明符。

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 2021-06-18
      相关资源
      最近更新 更多