运用ASP.NET MVC实现的图片上传功能
全部代码经过本人调试,运行通过,适合用来做参考,稍微修改即可变成自己的案例:
首先来建立数据库:
库名任意取
,表名这里叫Picture
字段名:
PictureID
FileContent
MimeType
FileName
[Content]
现在我们来看看Controller层代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Model;
using MvcApplication1.Models;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Xml.XPath;
public class PictureController : Controller
{
//
// GET: /Picture/
PictureDAL pal = new PictureDAL();
public ActionResult Index()
{
Picture p = Session["userName"] as Picture;
List<Picture> all = pal.BindPictureData(p.userID);
ViewData["picture"] = all;
return View(all);
}
/// <summary>
/// 上传图片的处理功能
/// </summary>
/// <returns></returns>
public ActionResult AddImages()
{
Picture p = new Picture();
string content = Request.Form["txtImages"];
foreach (string upload in Request.Files)
{
string path = AppDomain.CurrentDomain.BaseDirectory + "/Views/Images";
string filename = Path.GetFileName(Request.Files[upload].FileName);
Request.Files[upload].SaveAs(Path.Combine(path, filename));
}
//------------------------------------------------------------------------
foreach (string upload in Request.Files)
{
string mimeType = Request.Files[upload].ContentType;
Stream fileStream = Request.Files[upload].InputStream;
string fileName = Path.GetFileName(Request.Files[upload].FileName);
int fileLength = Request.Files[upload].ContentLength;
byte[] fileData = new byte[fileLength];
int userID =int.Parse( Session["userName"].ToString());
fileStream.Read(fileData, 0, fileLength);
int b = pal.InsertToPicture(fileData, mimeType, fileName, content,userID);
if (b > 0)
{
Response.Write("<script>alert('上传成功!');location.href='../Views/Picture/Index.aspx';</script>");
}
else
{
Response.Write("上传成功!");
}
}
return RedirectToAction("Index");
}
/// <summary>
/// 相册删除功能
/// </summary>
/// <returns></returns>
public ActionResult Delete(int id)
{
Picture p = new Picture();
p.PictureID = id;
if (pal.DeletePicture(p.PictureID))
{
Response.Write("<script>alert('删除成功!');location.href='Index.aspx'</script>");
}
return RedirectToAction("Index");
}
}
接下来是数据访问Model层代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Model;
using System.Data.SqlClient;
namespace MvcApplication1.Models
{
public class PictureDAL
{
PictureInfoDataContext plc = new PictureInfoDataContext("Data Source=.;Initial Catalog=MyBlog;Integrated Security=True");
/// <summary>
/// 绑定相册页面数据
/// </summary>
/// <returns></returns>
public List<Picture> BindPictureData(int id)
{
List<Picture> all = new List<Picture>();
var str = (from c in plc.Picture
where c.userID==id
select new
{
pictureID=c.PictureID,
pictureMimeType=c.MimeType,
pictureContent=c.FileContent,
pictureUrl = c.FileName,
content=c.Content,
userID=c.userID
}
).ToList();
for (int i = 0; i < str.Count; i++)
{
all.Add(new Picture { PictureID = str[i].pictureID, MimeType = str[i].pictureMimeType, FileName = str[i].pictureUrl, FileContent=str[i].pictureContent,Content=str[i].content, userID=str[i].userID });
}
return all;
}
/// <summary>
/// 添加一条记录
/// </summary>
/// <returns></returns>
public bool AddPicture(Picture p)
{
plc.Picture.InsertOnSubmit(p);
plc.SubmitChanges();
return true;
}
/// <summary>
/// 照片上传功能
/// </summary>
/// <returns></returns>
public int InsertToPicture(byte[] fileData,string mimeType,string fileName,string content,int userID)
{
string sql ="INSERT INTO Picture(FileContent, MimeType, FileName,Content,userID) VALUES (@FileContent, @MimeType, @FileName,@content,@userID)";
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=MyBlog;Integrated Security=True");
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@FileContent",fileData);
cmd.Parameters.AddWithValue("@MimeType", mimeType);
cmd.Parameters.AddWithValue("@FileName", fileName);
cmd.Parameters.AddWithValue("@content", content);
cmd.Parameters.AddWithValue("@userID",userID);
int x = 0;
try
{
conn.Open();
x= cmd.ExecuteNonQuery();
}
catch
{ }
finally
{
conn.Close();
}
return x;
}
/// <summary>
/// 照片删除功能
/// </summary>
/// <returns></returns>
public bool DeletePicture(int id)
{
var str=plc.Picture.SingleOrDefault(t=>t.PictureID==id);
plc.Picture.DeleteOnSubmit(str);
plc.SubmitChanges();
return true;
}
public Picture ShowImage(string Name)
{
SqlDataReader rdr = null;
string fileName= "", mimeType = "";
byte[] fileContent=null;
Picture p=new Picture();
p.FileContent=fileContent;
p.MimeType=mimeType;
p.FileName=fileName;
using (var conn = new SqlConnection("Data Source=.;Initial Catalog=MyBlog;Integrated Security=True"))
{
var qry = "SELECT FileContent, MimeType, FileName FROM Picture WHERE FileName = @Name";
var cmd = new SqlCommand(qry, conn);
cmd.Parameters.AddWithValue("@Name", Name);
conn.Open();
rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
rdr.Read();
p.FileContent = (byte[])rdr["FileContent"];
p.MimeType = rdr["MimeType"].ToString();
p.FileName = rdr["FileName"].ToString();
}
}
return p;
}
}
}
下面根据Controller层实现视图层的呈现,首先是Index视图页代码:
<body>
<div>
<%
using (Html.BeginForm("AddImages", "Picture", FormMethod.Post, new { enctype = "multipart/form-data" }))
{%>
<input type="text" name="txtImages" />
<input type="file" name="FileUpload1" />
<input type="submit" name="Submit" id="Submit" value="上传" /><br />
<% }%><table width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td height="50px" colspan="2" style="PADDING-LEFT: 20px; font-size:14px; text-align:center; FONT-WEIGHT: bold; COLOR: #ffffff; background-color:#3795d2;">
相册列表管理页</td>
</tr>
<tr>
<td>
<table class="code" width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#BBD3EB">
<tr>
<td height="27" align="center" background="<%=ResolveUrl("../Images/index1_72.gif") %>" bgcolor="#FFFFFF">
操作</td>
<td height="27" align="center" background="<%=ResolveUrl("../Images/index1_72.gif") %>" bgcolor="#FFFFFF">
相片编号</td>
<td height="27" align="center" background="<%=ResolveUrl("../Images/index1_72.gif") %>" bgcolor="#FFFFFF">
相片描述</td>
<td height="27" align="center"
background="<%=ResolveUrl("../Images/index1_72.gif") %>" bgcolor="#FFFFFF">相片</td>
</tr>
<%foreach (Model.Picture gb in ViewData["picture"] as List<Model.Picture>)
{ %>
<tr>
<td height="26" align="center" bgcolor="#FFFFFF">
<%=Html.ActionLink("修改", "Edit", new { id = gb.PictureID })%>
<%=Html.ActionLink("删除", "Delete", new { id = gb.PictureID })%>
</td>
<td height="26" align="center" bgcolor="#FFFFFF"><%=gb.PictureID%></td>
<td align="center" bgcolor="#FFFFFF"> <%=gb.Content%></td>
<td align="center" bgcolor="#FFFFFF"> <%=gb.MimeType%><img style=" width:250px; height:180px;" src="/Views/Images/<%=gb.FileName%>"/></td>
</tr>
<%} %>
</table>
</td>
</tr>
<tr>
<td> <a href="Delete"><img src="<%=ResolveUrl("../Images/index1_84.gif") %>" width="74" height="31" border="0" /></a></td>
</tr>
</table>
</div>
</body>
接下来是Delete.aspx页面代码和AddImages.aspx都没有写代码,但是你要建立这样两个页面,不然运行不成功,到此就建立完成整个图片上传和展示功能,下节继续为大家分享ASP.NET MVC的知识。
- 点赞
- 收藏
- 分享
- 文章举报
- ASP.NET MVC应用程序实现下载功能和显示上传的图片
- Asp.net MVC使用swupload实现多图片上传功能
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 实现Asp.net mvc上传头像加剪裁功能
- ASP.NET MVC实现图片上传、图片预览显示
- 在ASP.NET MVC下实现单个图片上传, 客户端服务端双重限制图片大小和格式, 服务端裁剪图片
- 基于ASP.NET+EasyUI框架实现图片上传提交表单功能(js提交图片)
- asp.net MVC实现无组件上传图片
- Asp.net MVC 实现图片上传剪切
- ASP.NET MVC Webuploader实现上传功能
- ASP.NET MVC图片上传前预览简单实现
- 简单实现ASP.NET MVC Ajax无刷新上传图片
- Asp.net MVC 实现图片上传剪切
- Asp.net实现MVC处理文件的上传下载功能实例教程
- ASP.NET MVC图片上传前预览简单实现
- 基于ASP.NET+EasyUI框架实现图片上传提交表单功能(js提交图片)
- 基于ASP.NET+easyUI框架实现图片上传功能(判断格式+即时浏览 )
- 基于ASP.NET+easyUI框架实现图片上传功能(表单)
- 基于asp.net实现图片在线上传并在线裁剪功能
- Asp.net实现MVC处理文件的上传下载功能实例教程