如何在数据库中保存文件路径?

时间:2014-11-12 21:41:05

标签: c# sql-server asp.net-mvc-4 entity-framework-4 uploadify

我正在上传我的应用程序音乐,使用uploadify插件,上传工作,但是,当我保存路径引用(音乐保存在我的项目中)时,我得到null价值,谁知道我怎么能这样做?

在MusicController上传方法

public ActionResult Upload()
{
    var file = Request.Files["Filedata"];
    string savePath = Server.MapPath(@"~\mp3\" + file.FileName);
    file.SaveAs(savePath);
    return Content(Url.Content(@"~\mp3\" + file.FileName));
}

在MusicController上创建方法

  public ActionResult Create(Musica musica)
        {
            MembershipUser user = Membership.GetUser();
            int userId = Int32.Parse(Membership.GetUser().ProviderUserKey.ToString());
            string userName = user.UserName;

            musica.UserId = userId;
            musica.NomeArtista = userName;

            if (musica.isFree)
            {

                musica.Preco = 0;
            }

            //Here I try to take the path value
            musica.path = Upload().ToString();

            if (ModelState.IsValid)
            {
                db.Musicas.Add(musica);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.GeneroId = new SelectList(db.Generos, "GeneroId", "Nome", musica.GeneroId);
            return View(musica);
        }

在这种情况下,我只想在我的数据库中保存这些信息:

~\mp3\MusicExample.mp3

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

编辑:因此您使用的上传方法是异步的,它会上传文件并将文件路径返回给页面。更改上传方法以返回所需的文件路径,在jQuery中捕获它并创建一个控件,在上传后保存信息:

您的上传方式应为:

public ActionResult Upload()
{
    var file = Request.Files["Filedata"];
    string savePath = Server.MapPath(@"~\mp3\" + file.FileName);
    file.SaveAs(savePath);
    return Content(@"~\mp3\" + file.FileName);
}

在您的视图中,为path属性添加控件:

@Html.EditorFor(model => model.path, new { id = "path"})

在javascript中,捕获返回值并将其设置在musica中path属性的新文本框中:

'onUploadSuccess': function (file, data, response) {
                $("#path").val(data);
            }

在create方法中,删除要调用Upload的代码:

//Stuff above here
if (musica.isFree)
{
    musica.Preco = 0;
}

//Here I try to take the path value
//musica.path = Upload().ToString();

if (ModelState.IsValid)
//stuff below here

现在,当您单击“创建”按钮时,它应该自动将路径属性设置为文件路径,它应该可以正常工作