Asp.net mvc 将上传文件的链接存储在mvc3的数据库中
我想在我的数据库中存储上传文件的链接。 我正在使用FileUpload控件 但我无法存储浏览过的url 我是mvc新手 请任何人帮帮我 以下是我尝试过的:Asp.net mvc 将上传文件的链接存储在mvc3的数据库中,asp.net-mvc,asp.net-mvc-3,sql-server-2008-r2,Asp.net Mvc,Asp.net Mvc 3,Sql Server 2008 R2,我想在我的数据库中存储上传文件的链接。 我正在使用FileUpload控件 但我无法存储浏览过的url 我是mvc新手 请任何人帮帮我 以下是我尝试过的: //Inside Model public class Hobbies { public int Id { get; set; } public string hobbiename { get; set; } public string filelocation { get; set; } public str
//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>
//内部模型
公共课爱好
{
公共int Id{get;set;}
公共字符串HOBIENAME{get;set;}
公共字符串文件位置{get;set;}
公共字符串hobbydeail{get;set;}
}
//内部控制器动作方法创建
[HttpPost]
公共操作结果创建(兴趣爱好、HttpPostedFileBase文件)
{
var r=新列表();
如果(file!=null&&file.ContentLength>0)
{
//只提取fielname
var fileName=Path.GetFileName(file.fileName);
//将文件存储在~/App_Data/uploads文件夹中
var path=path.Combine(Server.MapPath(“~/App\u Data/uploads”),文件名);
file.SaveAs(路径);
}
if(ModelState.IsValid)
{
db.hobby.Add(嗜好);
db.SaveChanges();
返回操作(“索引”);
}
返回视图(兴趣爱好);
}
//内部Create.cshtml
@型号MVCUpload4.Models.Habiots
@{
ViewBag.Title=“创建”;
}
创造
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
业余爱好
@LabelFor(model=>model.hobbiename)
@EditorFor(model=>model.hobbiename)
@Html.ValidationMessageFor(model=>model.hobbiename)
@LabelFor(model=>model.filelocation)
@LabelFor(model=>model.hobbydeail)
@EditorFor(model=>model.hobbydeail)
@Html.ValidationMessageFor(model=>model.hobbydeail)
}
@ActionLink(“返回列表”、“索引”)
我知道里面有很多错误。。
但是请你经历一下。。
我真的不理解它据我所知,无法直接获取
App_Data
文件夹中文件的URL(该文件夹受到保护,因此可以保存例如数据库文件)。您需要将其上载到另一个文件夹(例如,~/Uploads
)。然后您可以像这样构建URL:stringURL=”http://yourwebsite.com/Uploads/“+文件名编码>并将其存储在模型中