【问题标题】:Display new image on web page在网页上显示新图像
【发布时间】:2011-05-11 17:33:14
【问题描述】:

我正在将图像上传到一个文件夹,并且我希望每次将每个新图像保存在该文件夹中时都将其显示在网页上。

我可以显示初始图像,它已经在文件夹中,我也可以检测新图像何时保存到文件夹中,但我不知道如何显示新图像。

我是网络开发的新手。有人可以帮帮我吗?

代码如下:

public partial class _Default : System.Web.UI.Page
{

    string DirectoryPath = "C:\\Users\\Desktop\\PhotoUpload\\Uploads\\";

    protected void Page_Load(object sender, EventArgs e)
    {

        FileSystemWatcher watcher = new FileSystemWatcher();

        try
        {
            watcher.Path = DirectoryPath;
            watcher.Created += new FileSystemEventHandler(watcher_Created);
            watcher.EnableRaisingEvents = true;

            Image image = Image.FromFile(DirectoryPath + "inicial.jpg");
            MemoryStream ms = new MemoryStream();
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] im = ms.ToArray();

            Context.Response.ContentType = "Image/JPG";
            Context.Response.BinaryWrite(im);


        }
        catch (Exception ex)
        {
        }

    }

    void watcher_Created(object sender, FileSystemEventArgs e)
    {
        Console.WriteLine("File Created: Name: " + e.Name);

        try
        {

          //How to display new image?  


        }
        catch (Exception ex)
        {
        }
    }

}

【问题讨论】:

  • 您希望网页在添加新图像时自动更新,还是在加载时仅显示最近添加的图像?
  • 嗨,我希望页面在添加新图像时自动更新。那可能吗?谢谢。

标签: .net asp.net


【解决方案1】:

我认为您在 ASP.NET 开发方面遗漏了重要的一点。您正在尝试做的是在页面内的服务器端使用 FileWatcher。

它们的 ASP.NET 工作方式是它通过其管道运行以处理请求,并且当它完成时(已呈现输出 (html) 准备发送到浏览器)它会销毁在请求中创建的所有实例(包括您的页面和包含的 FileWatcher)。

如果您想在浏览器中更新页面,您将不得不使用一些客户端脚本(非常推荐使用 jQuery)来实现轮询,该轮询将请求(最好是 ajax)发送回服务器,请求新添加的图像。

希望对你有帮助?

迈克尔

【讨论】:

    【解决方案2】:

    正如 Michael 所指出的,您在问题中提出的部分解决方案并不适合 Web 应用程序。

    这里要记住的是请求页面时在服务器上运行的代码与在客户端浏览器中运行的代码之间的区别。

    为了有一个自动更新的网页,您需要某种客户端机制来轮询服务器并检查新图像。这可能是某种周期性 AJAX 请求的形式。原型 js 框架通过 Ajax.PeriodicalUpdater 提供此功能。

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 1970-01-01
      • 2012-07-14
      • 2013-11-09
      • 1970-01-01
      • 2020-08-09
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多