我正在使用 c# 和 asp .net 创建学生记录。为此,我添加了 5 个字段 - 名称、类别、部门、地址和图像。
当插入student1.jpg 时,它工作正常。当我插入具有不同图像的同名 (student1.jpg) 的第二条记录时出现问题。插入失败并出现“图像已存在”之类的错误。
了解了GUID的用途后,我想将这些用于我的工作。
是否可以这样做,如果可以,有人可以帮助我吗?
这是我的完整代码隐藏文件:
protected void btnsub_Click(object sender, EventArgs e)
{
SqlConnection con = Connection.DBconnection();
if (Textid.Text.Trim().Length > 0)
{
SqlCommand com = new SqlCommand("StoredProcedure3", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@id", Textid.Text.Trim());
com.Parameters.AddWithValue("@Name", Textusername.Text.Trim());
com.Parameters.AddWithValue("@Class", Textclass.Text.Trim());
com.Parameters.AddWithValue("@Section", Textsection.Text.Trim());
com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim());
try
{
string filename = Image1.ImageUrl.Substring(Image1.ImageUrl.IndexOf('/')+1);
if (fileupload.PostedFile.FileName.Length > 0)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
}
com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
com.ExecuteNonQuery();
}
catch (Exception ex)
{
btnsub.Text = ex.Message;
}
Response.Redirect("studententry.aspx");
}
else
{
SqlCommand com = new SqlCommand("StoredProcedure1", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@Name", Textusername.Text.Trim());
com.Parameters.AddWithValue("@Class", Textclass.Text.Trim());
com.Parameters.AddWithValue("@Section", Textsection.Text.Trim());
com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim());
try
{
string filename = string.Empty;
if (fileupload.PostedFile.FileName.Length > 0)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
if (File.Exists(Server.MapPath("~/Images/" + filename)))
{
Label6.Visible = true;
return;
}
fileupload.SaveAs(Server.MapPath("~/Images/" + filename));
}
com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty);
com.ExecuteNonQuery();
}
catch (Exception ex)
{
btnsub.Text = ex.Message;
}
Response.Redirect("studententry.aspx");
}
}
谢谢。
最佳答案
Namespace: using System.IO;
对于 StoredProdure3:
string filename = Image1.ImageUrl.Substring(Image1.ImageUrl.IndexOf('/')+1);
if (fileupload.PostedFile.FileName.Length > 0)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
string fileExtension = Path.GetExtension(filename).ToLower(); // this will give you file extension.
string uniqueFileName = Guid.NewGuid().ToString() + fileExtension; // this will give you unique filename.
fileupload.SaveAs(Server.MapPath("~/Images/" + uniqueFileName)); // save the image with guid name.
com.Parameters.AddWithValue("@Image",(filename.Length > 0) ? "Images/" + uniqueFileName : string.Empty); // now you can save the new filename in database for associated record.
}
对于 StoredProdure1:
string filename = string.Empty;
if (fileupload.PostedFile.FileName.Length > 0)
{
filename = Path.GetFileName(fileupload.PostedFile.FileName);
if (File.Exists(Server.MapPath("~/Images/" + filename)))
{
Label6.Visible = true;
return;
}
string fileExtension = Path.GetExtension(filename).ToLower(); // this will give you file extension.
string uniqueFileName = Guid.NewGuid().ToString() + fileExtension; // this will give you unique filename.
fileupload.SaveAs(Server.MapPath("~/Images/" + uniqueFileName)); // save the image with guid name.
}
com.Parameters.AddWithValue("@Image",(filename.Length > 0)? "Images/" + uniqueFileName : string.Empty);
com.ExecuteNonQuery();
现在,即使原始文件名相同但图像不同,所有将保存到驱动器的上传图像都将具有唯一名称。
关于c# - 如何使用 GUID 在 C# 中添加记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796223/