如何将文件保存到物理路径?

时间:2018-01-16 07:59:37

标签: c# asp.net

我需要将画布图像保存到我的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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

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