я делаю загрузку музыки в свое приложение, используя плагин uploadify, загрузка работает, но когда я сохраню ссылку на путь (где музыка сохраняется в моем проекте), я получаю нулевое значение, кто-либо знает, как я могу это сделать?
Метод загрузки в 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
Кто-то может мне помочь?
EDIT: Таким образом, метод загрузки, который вы используете, является асинхронным, и он загружает файл и возвращает путь к нему на страницу. Измените метод загрузки, чтобы вернуть путь к файлу, который вы хотите, захватите его в 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 захватите возвращаемое значение и установите его внутри нового текстового поля для свойства path
в musica:
'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
Теперь, когда вы нажимаете кнопку "Создать", она должна автоматически устанавливать свойство path в путь к файлу, и оно должно просто работать
~\mp3\MusicExample.mps
как полеvarchar
в базе данных или пытаетесь создать BLOB-объект ?Upload
действииCreate
. Это не имеет никакого смысла. Если методUpload
используется только для сохранения файла (т.е. это вообще не действие), он должен вернутьstring
или что-то в этом роде, а неActionResult
.