文件流文件保存

时间:2017-02-08 06:33:19

标签: c# asp.net

我在Canvas元素中有一个图像文件,我在asp.net中得到了代码。现在我想将它保存到我的项目中的文件夹,但文件流总是将其保存到c盘。我该怎么办?

[WebMethod()]
public void SaveUser(string imageData)
{
    //Create image to local machine.
    string fileNameWitPath = path + "4200020789506" + ".png";

    using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
    {
        using (BinaryWriter bw = new BinaryWriter(fs))
        {
            byte[] data = Convert.FromBase64String(imageData);
            bw.Write(data);
            bw.Close();
        }
    }
    // Save fileNameWitPath variable to Database.
}

3 个答案:

答案 0 :(得分:2)

以下是我如何将文件保存到项目目录中的Images文件夹的示例。

var fileName = "4200020789506.png";
var base64String = SOME_REALLY_LONG_STRING;

using (var s = new MemoryStream(Convert.FromBase64String(base64String)))
using (var f = new FileStream(Path.Combine(Server.MapPath("~/Images"), fileName), FileMode.Create, FileAccess.Write))
{
    s.CopyTo(f);
}

答案 1 :(得分:0)

我只能想象你的path变量指向你的C:\驱动器。

您需要将路径变量设置为您想要的位置,例如:

public void SaveUser(string imageData)
    {
        path = @"C:\YourCustomFolder\";  // your path needs to point to the Directory you want to save
        //Create image to local machine.
        string fileNameWitPath = path + "4200020789506" + ".png";

        //chekc if directory exist, if not, create
        if (!Directory.Exists(path))
            Directory.CreateDirectory(path);

        using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
        {
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                byte[] data = Convert.FromBase64String(imageData);
                bw.Write(data);
                bw.Close();
            }
        }
        // Save fileNameWitPath variable to Database.
    }

我还包括检查您的目录是否存在,如果不存在,它将在您的C驱动器上创建一个名为“YourCustomFolder”的文件夹,它将保存图像。

如果您想将图片保存到项目中的文件夹,我建议您使用Server.MapPath(~/YourFolderInApplication)

答案 2 :(得分:0)

这是我的工作,而且效果很好。对你来说,filePath / filename = fileNameWitPath。为您拥有的每个文件执行此操作。希望对你有效。如果您需要进一步的信息,我很乐意提供帮助。

 using (var stream = File.Create(filePath + filename))
 {
       attachment.ContentObject.DecodeTo(stream, cancel.Token);
 }