我有一个数据库,我上传文件夹和照片名称的照片路径名称,我可以在GridView中提取照片。
我的问题是当我尝试从GridView更新照片时,它的作用是如果照片名称相同,那么它会替换路径文件夹中同名的上一张照片,从而从路径中删除该照片文件夹中。
如果照片名称已准备就绪,我想要的是如何生成唯一的照片名称?
这是我的代码:
protected void GridView5_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string Id = GridView5.DataKeys[e.RowIndex].Value.ToString();
FileUpload FileUpload1 = (FileUpload)GridView5.Rows[e.RowIndex].FindControl("FileUpload1");
con = new SqlConnection(connStr);
string path = "~/PPhoto/";
if (FileUpload1.HasFile)
{
for (int i = 0; i < Request.Files.Count; i++)
{
path += FileUpload1.FileName;
// save image in folder
FileUpload1.SaveAs(MapPath(path));
SqlCommand cmd = new SqlCommand("update tblLogin set Pic = @Pic, ImageName = @ImageName where LoginId=" + Id + "", con);
cmd.Parameters.AddWithValue("@Pic", path);
cmd.Parameters.AddWithValue("@ImageName", FileUpload1.FileName);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
答案 0 :(得分:1)
您必须使用以下方法生成随机数:
private int GenerateRandomCode()
{
Random rnd = new Random();
int randomNumber = rnd.Next(1, 999); // creates a number between 1 and 999
return randomNumber;
}
然后连接生成带文件名的号码(不使用Path.GetFileNameWithoutExtension Method (String)扩展名),如下所示:
string namewithoutextension = Path.GetFileNameWithoutExtension(path);// pass full path here
string filename = namewithoutextension + GenerateRandomCode(); // result: e.g. ImageName565
顺便说一句:您还应该使用LoginId
方法cmd.Parameters.AddWithValue("@LoginId", Id);
:
class User (AbstractUser):
bio = models.TextField(max_length=500, blank=True)
birth_date = models.DateField(null=True, blank=True)
image=models.FileField(null=True , blank=True)