如果filepath不存在,则创建serverfolder

时间:2014-04-24 13:14:31

标签: c# asp.net-mvc file

我有一个控制器方法,可以处理来自jquery脚本的文件上传。我使用以下代码Path.Combine(Server.MapPath("~/UserFiles/"), qqfile);指定文件路径我想添加一个参数来指定文件的子文件夹,但我只能指定现有文件夹。

如果它不存在,是否有任何简单的方法可以在服务器上创建子文件夹?

这是我的控制器方法:

public ActionResult FileUpload(string qqfile)
{
    var file = string.Empty;

    try
    {
        var stream = Request.InputStream;
        if (String.IsNullOrEmpty(Request["qqfile"]))
        {
            // IE
            HttpPostedFileBase postedFile = Request.Files[0];
            stream = postedFile.InputStream;
            file = Path.Combine(Server.MapPath("~/UserFiles/"), System.IO.Path.GetFileName(Request.Files[0].FileName));
        }
        else
        {
            //Webkit, Mozilla
            file = Path.Combine(Server.MapPath("~/UserFiles/"), qqfile);
        }

        var buffer = new byte[stream.Length];
        stream.Read(buffer, 0, buffer.Length);
        System.IO.File.WriteAllBytes(file, buffer);
    }
    catch (Exception ex)
    {
        return Json(new { success = false, message = ex.Message }, "application/json");
    }

    return Json(new { success = true }, "text/html");
}

1 个答案:

答案 0 :(得分:5)

你试过这个吗?

        string path = "~/UserFiles/subfolder/";
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        //todo

或者这应该有用

string folder= "subfolder";
var path= Server.MapPath("~/UserFiles/" + folder);
var directory = new DirectoryInfo(path);
if (directory.Exists == false)
{
    directory.Create();
}
//todo