Хранить ссылку загруженного файла в базе данных в mvc3 - PullRequest
0 голосов
/ 27 февраля 2012

Я хочу сохранить ссылку на загруженный файл в моей базе данных.Я использую FileUpload Control, но я не могу сохранить просмотренный URL. Я новичок в mvc. Пожалуйста, кто-нибудь поможет мне Вот что я попробовал:

//Inside Model
public class Hobbies
{
    public int Id { get; set; }
    public string hobbiename { get; set; }
    public string filelocation { get; set; }
    public string hobbydetail { get; set; }
}

//inside Controller action method create
 [HttpPost]
    public ActionResult Create(Hobbies hobbies,HttpPostedFileBase file)
    {
        var r = new List<Hobbies>();
        if (file != null && file.ContentLength > 0)
        {
            // extract only the fielname 
            var fileName = Path.GetFileName(file.FileName);
            // store the file inside ~/App_Data/uploads folder 
            var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
            file.SaveAs(path);
        }

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

        return View(hobbies);
    }
//inside Create.cshtml
@model MVCUpload4.Models.Hobbies

@{
ViewBag.Title = "Create";
 }

<h2>Create</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"     type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
    <legend>Hobbies</legend>

    <div class="editor-label">
        @Html.LabelFor(model => model.hobbiename)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.hobbiename)
        @Html.ValidationMessageFor(model => model.hobbiename)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.filelocation) 
     <input type="file" name="file"/> 

    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.hobbydetail)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.hobbydetail)
        @Html.ValidationMessageFor(model => model.hobbydetail)
    </div>

    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

Я знаю, что в нем много ошибок ..Но, пожалуйста, пройдите это .. Я действительно не понимаю этого

1 Ответ

0 голосов
/ 29 февраля 2012

Насколько я знаю, невозможно получить прямой URL-адрес файла в папке App_Data (папка защищена, что позволяет сохранить, например, файл базы данных). Вам необходимо загрузить его в другую папку (например, ~/Uploads). Затем вы можете создать URL-адрес следующим образом: string url = "http://yourwebsite.com/Uploads/" + filename; и сохранить его в своей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...