我正在尝试将数据上传到我的数据库,包括图片。除了图像之外的一切都很好。
我正在使用FileUpload
组件:
<asp:FileUpload runat="server" ID="ImgFileUpload" />
这是我的C#代码:
protected void btnSave_Click(object sender, EventArgs e)
{
if (ImgFileUpload.HasFile)
{
int length = ImgFileUpload.PostedFile.ContentLength;
byte[] pic = new byte[length];
ImgFileUpload.PostedFile.InputStream.Read(pic, 0, length);
try
{
SqlConnection conn = new SqlConnection("Data Source=GAMINGSYSTEMS;Initial Catalog=MAIN;Integrated Security=True");
SqlCommand com = new SqlCommand("insert into Personal " + "(Name, Job, Email, Picture) values (@Name, @Job, @Email, @Img)", conn);
conn.Open();
com.Parameters.AddWithValue("@Name", txtboxName.Text);
com.Parameters.AddWithValue("@Job", txtboxEmail.Text);
com.Parameters.AddWithValue("@Email", txtboxEmail.Text);
com.Parameters.AddWithValue("@Img", pic);
com.ExecuteNonQuery();
}
finally
{
}
}
}
我的SQL Server数据库:因为除了图片以外的所有内容都可以告诉我们表格中的Image行:
Column Name: Picture . Data Type: image . Allow Nulls: Allowed.
当我尝试上传图片时,我在图片中的所有内容都是这个()
因为我无法上传图片而出现了什么问题
答案 0 :(得分:1)
您可能需要按照here和here所述重置搜索位置。您的代码可能如下所示:
int length = ImgFileUpload.PostedFile.ContentLength;
byte[] pic = new byte[length];
ImgFileUpload.PostedFile.InputStream.Seek(0, SeekOrigin.Begin);
ImgFileUpload.PostedFile.InputStream.Read(pic, 0, length);
答案 1 :(得分:0)
我强烈建议您将列数据类型更改为长文本。
之后转换base64字符串中的字节数组
String imageString = Convert.ToBase64String(pic);
您可以选择在base64String之前添加“data:image / png; base64”,以便可以直接在html5中使用。
imageString = "data:image/png;base64," + imageString;
答案 2 :(得分:0)
我遇到过类似你之前的情况。
对于我的数据库,(我正在使用Microsoft Access 2010)对于图像列,我的所有图像都是路径〜Images2 / picture1.jpg。 Images2将是存储所有图片的文件夹。
对于VS Pro 2013 - 网格视图详细信息视图等,我将链接到数据库并添加一个Imagefield列并替换上一列(Boundfield)它将显示图像。
对于fileupload,这是我使用的代码,您可以将其用于引用。如果你想将文件链接存储到你的数据库,然后检索要显示在你的网站/应用程序中的图像,你只需将文件保存为“〜Images2 / picture1.jpg”,然后使用gridview等进行检索。希望它对你有帮助。
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (FileUpload1.HasFile)
{
SaveFile(FileUpload1.PostedFile);
}
else
{
Label4.Text = "You did not specify a file to upload";
}
}
void SaveFile(HttpPostedFile File)
{
string savePath = Server.MapPath("~/Images2/");
string fileName = FileUpload1.FileName;
string pathToCheck = savePath + fileName;
string tempFileName = "";
if (System.IO.File.Exists(pathToCheck))
{
int counter = 2;
while (System.IO.File.Exists(pathToCheck))
{
tempFileName = counter.ToString() + fileName;
pathToCheck = savePath + tempFileName;
counter++;
}
fileName = tempFileName;
// notify user that file name was changed
Label4.Text = "A file name with the same name already exist, " +
"<br />Your file was saved as " + fileName;
}
else
{
labelFileName.Text = fileName;
LabelFileType.Text = FileUpload1.PostedFile.ContentType;
LabelFileContentLength.Text = FileUpload1.PostedFile.ContentLength.ToString();
Label4.Text = "Your file was uploaded successfully";
}
// Append the name of the file to upload to the path
savePath += fileName;
FileUpload1.SaveAs(savePath);
}
}