我一直在尝试使用asp FileUpload控件执行图像的简单上传操作,并将其保存在Oracle数据库中。虽然我已经硬编了几行,但我还是成功了。但是,我真的想了解这个问题,并寻求专家意见。经过大量的谷歌搜索后,我尝试在我的网络应用程序中使用各种代码片段,最终失败了。以下代码部分适用于我。
protected void btnSubmit_Click(object sender, EventArgs e)
{
String strFileName = Path.GetFileName(imgUpload.PostedFile.FileName);
String strFileExtension = Path.GetExtension(imgUpload.PostedFile.FileName);
byte[] byteArray = null;
if (imgUpload.PostedFile != null)
{
using (FileStream fs = new FileStream(strFileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
byteArray = new byte[fs.Length];
int iBytesRead = fs.Read(byteArray, 0, (int)fs.Length);
}
string sql = " INSERT INTO IMAGETBL(ID,IMAGE) VALUES(:ID, :IMAGE) ";
OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
try
{
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add("ID", OracleDbType.Int32, 4, ParameterDirection.Input);
cmd.Parameters.Add("IMAGE", OracleDbType.Blob, byteArray, ParameterDirection.Input);
cmd.ExecuteNonQuery();
secondlabel.Text = "Image added to blob field";
}
catch (Exception ex)
{
secondlabel.Text = ex.ToString();
}
finally
{
conn.Close();
}
}
}
当我运行此代码时,它会提示Filenotfound错误。找不到文件'C:\ Program Files \ Common Files \ Microsoft Shared \ DevServer \ 10.0' 然后为了使它工作,我不得不手动复制粘贴我的图像文件在上述位置。必须有一种方法来创建目录并暂时保存图像。稍后应在Oracle数据库中插入相同的图像。
HttpPostedFile imgFile = imgUpload.PostedFile;
int imgFileLength = imgFile.ContentLength;
if (imgFileLength > 0)
{
var fileName = System.IO.Path.GetFileName(imgFile.FileName);
var fileUpload = Path.Combine(Server.MapPath("~/user_uploads"), fileName);
imgFile.SaveAs(fileUpload);
if (System.IO.File.Exists(fileUpload))
{
using (System.IO.StreamReader sr = new System.IO.StreamReader(fileUpload))
{
var input = sr.ReadToEnd();
var lines = Regex.Split(input, "#!#");
另一个......
string path = HttpContext.Current.ApplicationInstance.Server.MapPath("~/user_uploads");
string fn = System.IO.Path.GetFileName(imgUpload.PostedFile.FileName);
imgUpload.PostedFile.SaveAs(System.IO.Path.Combine(path, fn));
Mylabel.Text = Path.GetFullPath(strFileName);
imgUpload.PostedFile.SaveAs(strFileName);
我几乎不理解这些片段。此外,如果你知道更简单的方法来完成相同的建议。请帮助我!
答案 0 :(得分:0)
如果您只是上传文件并希望将其推送到Db,那么您应该只需抓取postedFile值并使用它即可。
调整你的第一个剪辑:
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (imgUpload.PostedFile != null)
{
BinaryReader b = new BinaryReader(imgUpload.InputStream);
byte[] byteArray = b.ReadBytes(imgUpload.ContentLength);
string sql = " INSERT INTO IMAGETBL(ID,IMAGE) VALUES(:ID, :IMAGE) ";
OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
try
{
conn.Open();
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.Parameters.Add("ID", OracleDbType.Int32, 4, ParameterDirection.Input);
cmd.Parameters.Add("IMAGE", OracleDbType.Blob, byteArray, ParameterDirection.Input);
cmd.ExecuteNonQuery();
secondlabel.Text = "Image added to blob field";
}
catch (Exception ex)
{
secondlabel.Text = ex.ToString();
}
finally
{
conn.Close();
}
}
}