二进制上传图片到数据库
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="upload.aspx.cs" Inherits="二进制上传图片.upload" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
$(document).ready(function(){
$("FileUpload1").val("");
});
function checkSize(obj_file) {
var _size = obj_file.files[0].size;
if (_size > 9000000)
alert("超过9M");
$(obj_file).focus();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" onchange="checkSize(this)"/><asp:Button ID="Button1" runat="server" Text="上传" OnClick="Button1_Click"/>
</div>
</form>
</body>
</html>
后台页面代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
namespace 二进制上传图片
{
public partial class upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//上传到数据库 注意引用using System.IO;才有Path
/* if (!FileUpload1.HasFile)
{
Response.Write("未选择文件");
return;
}
else
{
//创建访问上传文件的对象,并获取上传的文件
HttpPostedFile file = FileUpload1.PostedFile;
//获取上传文件的文件名和扩展名
string filename =Path.GetFileName(FileUpload1.PostedFile.FileName);
string extension = Path.GetExtension(filename);
//实例化一个byte数组,其长度等于上传文件的长度
byte[] imagetype = new byte[file.ContentLength];
//将文件数据读取到byte数组中
file.InputStream.Read(imagetype, 0, file.ContentLength);
//判断图片格式
if ((extension == ".jpg") || (extension == ".png") || (extension == ".gif") || (extension == ".bmp"))
{
//表里写入数据
using (SqlConnection connection = new SqlConnection("server=.;database=ha;uid=ok;pwd=123"))
{
connection.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
string commandText = "Insert into Images values (@Image_Content)";
cmd.CommandText = commandText;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@Image_Content", SqlDbType.VarBinary);
cmd.Parameters["@Image_Content"].Value = imagetype;
cmd.ExecuteNonQuery();
cmd.Dispose();
connection.Close();
Response.Write("导入成功");
}
}
else
{
Response.Write("导入失败"); return;
}
}*/
//上传指定文件夹
if (!FileUpload1.HasFile)
{
Response.Write("未选择文件");
return;
}
else
{
string targPath = MapPath("~/image/") + FileUpload1.FileName;
// string targPath = MapPath("~/image/") + DateTime.Now.ToOADate().ToString()+Path.GetExtension(FileUpload1.FileName);
FileUpload1.SaveAs(targPath);
Response.Redirect(Request.RawUrl);//解决了F5刷新页面重复上传问题
}
}
}
}
两种方式都亲自测试后,为真实有效!