【问题标题】:showing thumbnail after image upload图片上传后显示缩略图
【发布时间】: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


    【解决方案1】:

    这与页面生命周期有关。 Page_load 在上传之前触发。

    尝试将填充缩略图的代码放在 Page_PreRender 而不是 Page_Load 中。

           protected void Page_PreRender(object sender, EventArgs e) {
             //CODE HERE}
    

    这样它会在点击上传按钮之后而不是之前被触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多