我正在上传我的应用程序音乐,使用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
有人可以帮助我吗?
答案 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
现在,当您单击“创建”按钮时,它应该自动将路径属性设置为文件路径,它应该可以正常工作