在我的页面中,我有2个按钮,一个按钮用于上传文件,并在网格视图中显示它们,另一个按钮“发送”用于在数据库中保存文件。
我使用下面的代码在网格视图中显示文件名,大小和类型,然后我可以从网格视图中获取这些值并保存在数据库中。但我有二进制数据的问题。 我不知道在哪里以及如何保存每个文件的二进制数据,因为在保存到数据库之后我需要它们。
protected void btnUpload_Click(object sender, EventArgs e)
{
DataTable dt;
DataRow dr = null;
bool isDuplicate = false;
if (FileUpload1.HasFile)
{
FileInfo fileObj = new FileInfo(FileUpload1.PostedFile.FileName);
string FileName = FileUpload1.PostedFile.FileName;
long size = FileUpload1.PostedFile.ContentLength;
string ext = Path.GetExtension(FileName);
string contenttype = String.Empty;
//Set the contenttype based on File Extension
switch (ext)
{
case ".doc":
contenttype = "application/vnd.ms-word";
break;
case ".docx":
contenttype = "application/vnd.ms-word";
break;
case ".xls":
contenttype = "application/vnd.ms-excel";
break;
case ".xlsx":
contenttype = "application/vnd.ms-excel";
break;
case ".jpg":
contenttype = "image/jpg";
break;
case ".png":
contenttype = "image/png";
break;
case ".gif":
contenttype = "image/gif";
break;
case ".pdf":
contenttype = "application/pdf";
break;
}
Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
if (FileUpload1.PostedFile.ContentLength > 0)
{
if (GridViewEfile.Rows.Count > 0)
{
int count = GridViewEfile.Rows.Count;
dt = new DataTable();
DataColumn dc1 = new DataColumn("File Name", typeof(string));
DataColumn dc2 = new DataColumn("File Size", typeof(string));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
for (int i = 0; i < count; i++)
{
if (GridViewEfile.Rows[i].Cells[1].Text == FileName)
{
Label2.Text = "File already in the list";
isDuplicate = true;
break;
}
}
for (int j = 0; j < count; j++)
{
dr = dt.NewRow();
dr["File Name"] = GridViewEfile.Rows[j].Cells[1].Text;
dr["File Size"] = GridViewEfile.Rows[j].Cells[2].Text;
dt.Rows.Add(dr);
}
if (!isDuplicate)
{
if (size == 0)
{
Label2.Text = "File size cannot be 0";
}
else
{
dr = dt.NewRow();
dr["File Name"] = FileName;
dr["File Size"] = size.ToString() + " KB";
dt.Rows.Add(dr);
}
}
GridViewEfile.DataSource = dt;
GridViewEfile.DataBind();
}
else
{
dt = new DataTable();
DataColumn dc1 = new DataColumn("File Name", typeof(string));
DataColumn dc2 = new DataColumn("File Size", typeof(string));
DataColumn dc3 = new DataColumn("Content Type", typeof(string));
DataColumn dc4 = new DataColumn("Bytes", typeof(Byte[]));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dr = dt.NewRow();
dr["File Name"] = FileName;
if (size > 0)
dr["File Size"] = size.ToString() + " KB";
else
{ dr["File Size"] = fileObj.Length.ToString() + " Bytes"; }
dr["Content Type"] = contenttype;
dr["Bytes"] = bytes;
var x = bytes;
var y = dr["Bytes"];
dt.Rows.Add(dr);
GridViewEfile.DataSource = dt;
GridViewEfile.DataBind();
}
}
}
else
{
Label2.Text = "Please select a file to add";
}
}