C#--web中上传图片与浏览


FileUpload控件:
属性:
FileName:文件名
HasFile:bool 是否选中了文件
FileBytes:要上传文件的二进制数据
方法:
SaveAs(string 绝对路径):上传,另存为。

一、上传到硬盘文件夹
(一)传单个文件
第一步:准备好文件及路径:
//把之前在客户端的文件名给取出来
string fileName = FileUpload1.FileName;

//防止文件重名
fileName = DateTime.Now.ToString("yyyyMMddhhmmsss") + fileName;

//把相对路径转化为绝对路径
string path = Server.MapPath("uploads/" + fileName);

第二步:执行上传:
//上传
FileUpload1.SaveAs(path); //参数必须根路径

注意:
1.如何防止文件重名?
2.如何防止同一时间点不同用户传统一文件名?

protected void Button1_Click(object sender, EventArgs e)
{
Label2.Text = FileUpload1.FileName;
string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + Label2.Text;
string path = Server.MapPath("/upload/") + filename;
FileUpload1.SaveAs(path);
}

(二)传多个文件:
思路:遍历表单中所有的FileUpload控件,如果选择文件就上传

int index = 0;
foreach (Control ctrl in form1.Controls)
{
if (ctrl is FileUpload)
{
index++;
//取得每个上传控件
FileUpload upload = ctrl as FileUpload;
//上传控件中选上文件了
if (upload.HasFile)
{
//做文件路径出来
string path = Server.MapPath("uploads/" + DateTime.Now.ToString("yyyyMMddhhmmss") + index.ToString("00") + upload.FileName);

//上传
upload.SaveAs(path);
}
}
}

我的:

protected void Button8_Click(object sender, EventArgs e)
{
foreach (Control co in form1.Controls)
{
if (co is FileUpload)
{
FileUpload fiup=co as FileUpload;
if (fiup.HasFile)//重点
{
string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + fiup.FileName;
string path = Server.MapPath("/upload/") + filename;
fiup.SaveAs(path);
}

}
}
}

二、上传到数据库Image字段:
(一)传到数据库去
1.做数据库的操作代码。DA Data
Image字段对应在程序里是byte[]类型

2.做界面上的代码。
a.把界面的值取出来
FileUpload1.FileBytes - 用来获得上传文件的二进制数据。
b.送到数据库去

(二)从数据库中找出来,显示出来
法一:会生成垃圾文件
在服务端生成一个JPG,把这个JPG的路径赋给Image控件

法二:单独做一个用来显示图片二进制数据的页面。把这个页面赋给Image控件。

我的;

页面一:

protected void Button2_Click(object sender, EventArgs e)//上传到数据库
{
ImageshujuData da = new ImageshujuData();
da.Iname = FileUpload1.FileName;
da.Ipath = FileUpload1.FileBytes;
ImageshujuDA im=new ImageshujuDA();
im.Insert(da);
}
protected void llimage_Click(object sender, EventArgs e)//从数据库中浏览图片
{
Image1.ImageUrl = "Showimage.aspx?id="+TextBox1.Text;
}

页面二:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DA;
using Data;
public partial class Showimage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string iid=Request["id"].ToString();
int imid = Convert.ToInt32(iid);
ImageshujuData da = new ImageshujuDA().Select(imid);
if (da != null)
{
byte[] pic = da.Ipath;
Response.OutputStream.Write(pic,0,pic.Length);
Response.End();

}
}
}

数据库:

drop table Imageshuju;--删除
create table Imageshuju--创建
(
Iid int identity primary key,
Iname varchar(100) not null,
Ipath image
)

select * from Imageshuju;--查询

原文地址:https://www.cnblogs.com/xianshui/p/4541640.html