【发布时间】:2012-03-13 03:11:24
【问题描述】:
我正在开发一个图片库,用户可以在其中上传图片。上传的图片会被转换为缩略图,并放在缩略图的特定文件夹中,而原始图像则放在全尺寸图片的文件夹中。
在后面代码的 Page_Load 方法中,我从文件夹中获取缩略图并将它们绑定到我正在使用的中继器,这意味着该文件夹中的所有图像都会在页面加载时显示。
当用户选择上传图片时,UploadButton_Click 函数被调用,文件被处理,然后以全尺寸显示。一切正常,接受上传的图像缩略图在上传后没有直接显示。要显示它,您必须重新加载页面,以便再次加载 Page_Load。
当然,解决这个问题的一种东方方法是将用于获取缩略图和绑定Repeater控件的代码放在UploadButton_Click函数中,但这是我不喜欢的DRY。
有没有更好、更优雅的方法来解决这个问题?
后面的代码:
protected void Page_Load(object sender, EventArgs e) {
var directory = new DirectoryInfo(Gallery.PhysicalApplicationPath + "/Images");
var theFiles = directory.GetFiles();
ImageRepeater.DataSource = theFiles;
ImageRepeater.DataBind();
var dataName = Request.QueryString["name"];
if (dataName != null) {
fullSizeImage.ImageUrl = "Images/" + dataName;
}
}
protected void UploadButton_Click1(object sender, EventArgs e) {
if (Page.IsValid) {
if (ImageUpload.HasFile) {
var content = ImageUpload.FileContent;
var name = ImageUpload.FileName;
var image = Gallery.SaveImage(content, name);
fullSizeImage.ImageUrl = "Images/" + image;
}
}
}
【问题讨论】:
标签: c# asp.net file-upload repeater thumbnails