今天看到一段代码,觉得还可以,虽然作者想要的功能没能够实现,但是值得讨论。
首先,我们想想要实现这样的功能该怎么做呢?
首先我们用经典的IFrame控件来实现文件的异步上传,也就是说文件上传的服务器端处理不是在原来页面的后置文件中,而是在Iframe窗口所打开的文件的后置代码中。注意,主窗口和Iframe窗口可以打开同一个地址的网页,也就是同一个网页,但是在服务器端,他们分别属于不同的实例,不同的Viewstate处理单位。
其次,我们需要文件上床成功后,在主页面刷新缩略图,因为文件上传的服务器端处理不是在原来页面的后置文件中,因此不可以直接在服务器端使用UpdatePanel.Update(),我们只能等文件上传完成并返回到客户端的Iframe窗口的时候发送消息到传页面通知其刷新缩略图,或者直接把缩略图的地址赋值给主页面的某个图片的SRC属性。注意,缩略图的地址可能并不是某个图片的地址,因为一般不存储一个缩略图副本在服务器文件系统,一般直接把一个ASPX文件的地址赋值给SRC属性,这个ASPX文件用于从原图生成缩略图并返回缩略图到客户端,关于生成缩略图的代码,请参考我的下一篇随笔。

以下代码仅供参考,并没有实现在主页面刷新缩略图的功能。

关于异步上传图片以及上传完成后显示缩略图的问题using System;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Data;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Configuration;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Linq;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Web;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Web.Security;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Web.UI;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Web.UI.WebControls;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Web.UI.WebControls.WebParts;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Web.UI.HtmlControls;
关于异步上传图片以及上传完成后显示缩略图的问题using System.Xml.Linq;
关于异步上传图片以及上传完成后显示缩略图的问题using Subgurim.Controles;
关于异步上传图片以及上传完成后显示缩略图的问题using System.IO;
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题public partial class _Default : System.Web.UI.Page
关于异步上传图片以及上传完成后显示缩略图的问题{
关于异步上传图片以及上传完成后显示缩略图的问题    private String ImageFolder = "~/temp";
关于异步上传图片以及上传完成后显示缩略图的问题    private Int32 ImgPerRow = 8;
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题    protected void Page_Load(object sender, EventArgs e)
关于异步上传图片以及上传完成后显示缩略图的问题    {
关于异步上传图片以及上传完成后显示缩略图的问题        ScriptManager1.RegisterAsyncPostBackControl(FileUploaderAJAX1);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        if (FileUploaderAJAX1.IsPosting)
关于异步上传图片以及上传完成后显示缩略图的问题            this.managePost();
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        if (!Page.IsPostBack)
关于异步上传图片以及上传完成后显示缩略图的问题        {
关于异步上传图片以及上传完成后显示缩略图的问题            GenerateImagesTable();
关于异步上传图片以及上传完成后显示缩略图的问题        }
关于异步上传图片以及上传完成后显示缩略图的问题    }
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题    private void managePost()
关于异步上传图片以及上传完成后显示缩略图的问题    {
关于异步上传图片以及上传完成后显示缩略图的问题        HttpPostedFileAJAX pf = FileUploaderAJAX1.PostedFile;
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        if ((pf.ContentType.Equals("image/gif") || pf.ContentType.Equals("image/jpeg") || pf.ContentType.Equals("image/pjpeg")) && pf.ContentLength 
<= 100 * 1024)
关于异步上传图片以及上传完成后显示缩略图的问题            FileUploaderAJAX1.SaveAs("~/temp", pf.FileName);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        GenerateImagesTable();
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        UpdatePanel1.Update();
关于异步上传图片以及上传完成后显示缩略图的问题    }
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题    private void GenerateImagesTable()
关于异步上传图片以及上传完成后显示缩略图的问题    {
关于异步上传图片以及上传完成后显示缩略图的问题        DirectoryInfo dir 
= new DirectoryInfo(MapPath(ImageFolder));
关于异步上传图片以及上传完成后显示缩略图的问题        FileInfo[] files 
= dir.GetFiles();
关于异步上传图片以及上传完成后显示缩略图的问题        
UpdatePanel1.ContentTemplateContainer.Controls.Clear();
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        if (files.Length 
== 0)
关于异步上传图片以及上传完成后显示缩略图的问题        {
关于异步上传图片以及上传完成后显示缩略图的问题            UpdatePanel1.ContentTemplateContainer.Controls.Add(new LiteralControl("Pas de fichiers présents dans ce dossier"));
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题            return;
关于异步上传图片以及上传完成后显示缩略图的问题        }
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        Table ImgTable 
= new Table();
关于异步上传图片以及上传完成后显示缩略图的问题        TableRow ImgTableRow 
= new TableRow();
关于异步上传图片以及上传完成后显示缩略图的问题        TableCell ImgTableCell 
= new TableCell();
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        UpdatePanel1.ContentTemplateContainer.Controls.Add(ImgTable);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        ImgTable.Rows.Add(ImgTableRow);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        ImgTable.Width 
= Unit.Percentage(100);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题        
Int32 i = 0;
关于异步上传图片以及上传完成后显示缩略图的问题        
foreach (FileInfo file in files)
关于异步上传图片以及上传完成后显示缩略图的问题        {
关于异步上传图片以及上传完成后显示缩略图的问题            String FileName 
= file.Name;
关于异步上传图片以及上传完成后显示缩略图的问题            
if (i++ == ImgPerRow)
关于异步上传图片以及上传完成后显示缩略图的问题            {
关于异步上传图片以及上传完成后显示缩略图的问题                ImgTableRow 
= new TableRow();
关于异步上传图片以及上传完成后显示缩略图的问题                ImgTable.Rows.Add(ImgTableRow);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题                i 
= 1;
关于异步上传图片以及上传完成后显示缩略图的问题            
}
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题            ImgTableCell 
= new TableCell();
关于异步上传图片以及上传完成后显示缩略图的问题            ImgTableRow.Cells.Add(ImgTableCell);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题            ImgTableCell.HorizontalAlign 
= HorizontalAlign.Center;
关于异步上传图片以及上传完成后显示缩略图的问题            
ImgTableCell.Width = Unit.Percentage(12.5);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题            
Image myImage = new Image();
关于异步上传图片以及上传完成后显示缩略图的问题            myImage.ImageUrl 
= ImageFolder + "/" + FileName;
关于异步上传图片以及上传完成后显示缩略图的问题            myImage.Width 
= Unit.Pixel(50);
关于异步上传图片以及上传完成后显示缩略图的问题            
myImage.Height = Unit.Pixel(50);
关于异步上传图片以及上传完成后显示缩略图的问题
关于异步上传图片以及上传完成后显示缩略图的问题            
ImgTableCell.Controls.Add(myImage);
关于异步上传图片以及上传完成后显示缩略图的问题        }
关于异步上传图片以及上传完成后显示缩略图的问题    }
关于异步上传图片以及上传完成后显示缩略图的问题}

相关文章:

  • 2022-12-23
  • 2021-12-01
  • 2022-01-01
  • 2021-06-24
  • 2022-01-16
  • 2022-12-23
  • 2021-07-07
猜你喜欢
  • 2021-10-13
  • 2022-12-23
  • 2022-01-08
  • 2021-05-26
  • 2022-12-23
  • 2021-10-09
相关资源
相似解决方案