【问题标题】:How to Apply OpenFileDialog Function to a WebApplication如何将打开文件对话框功能应用于 Web 应用程序
【发布时间】:2011-03-11 12:31:21
【问题描述】:

我正在开发一个 Web 应用程序,其中一个页面有一些必要性,用户应该选择系统中的任何文件夹,例如,如果他选择 ex:D:\xyz,那么这个路径应该保存在数据库中,我有编写了用于存储到数据库并保留所有内容的代码。但实际上我认为,如果它像一个浏览按钮单击功能来选择文件夹,我所做的是,因为我不知道如何在 Web 应用程序中制作它,我只是使用了一个文本框来让用户输入路径.谁能帮我在网页中应用打开文件对话框功能?

提前致谢,

问候 卡利安。

【问题讨论】:

    标签: .net asp.net vb.net web-applications openfiledialog


    【解决方案1】:

    没有用于选择文件夹的 ASP.Net 控件。

    作为一种简单的解决方法,您可以使用FileUpload-Control 让用户选择一个文件,您可以使用save the folder of that file。但这仅适用于 IE,因为其他浏览器不会发布完整的文件路径,而只会发布文件名(安全限制)。

    编辑:正如 Ben 提到的,这在 IE>7 中也不起作用: http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx(部分File Upload Control

    【讨论】:

    • IE8 也不提供路径,IIRC。
    【解决方案2】:

    对于网络应用程序:

    System.IO.FileInfo file = new System.IO.FileInfo(file1);
    Response.AddHeader("Content-Disposition", "attachment;filename=\"" +"Filename"+".ext"+ "\"");
                Response.AddHeader("Content-Length", file.Length.ToString());
                Response.ContentType = file.Extension.ToLower();
                Response.WriteFile(file.FullName);
                Response.End();
    

    【讨论】:

      【解决方案3】:

      通过右键单击解决方案探索项目名称添加参考system.windows.forms添加windows openfile对话框引用到Web应用程序 然后按照这里的编码风格,我给出了VB 示例代码,如果你遇到任何问题告诉我,你可以将其转换为C#

      VB 代码

         Import system.threading
      
         Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs)  Handles btnUpload.Click
      
          Dim objThread As New Thread(AddressOf FnOpenFileDialog)
          objThread.IsBackground = True
          objThread.SetApartmentState(ApartmentState.STA)
          objThread.Start()
      End Sub
      
      Private Sub FnOpenFileDialog()
          Dim openfile As New System.Windows.Forms.OpenFileDialog
          'openfile.InitializeLifetimeService()
          'openfile.Filter = String.Format("Image file (*.jpg)|*.jpg|All files (*.*)|*.*")
          openfile.Filter = String.Format("Image file (*.jpg)|*.jpg")
          openfile.Multiselect = True
          openfile.ShowDialog()
      End Sub
      

      【讨论】:

      • 这种方法有风险缺点吗?走出浏览器沙箱似乎是表面上的事情?
      • 是的,托管后它不起作用,因为这是 Windows 应用程序控制,如果您遇到任何问题,请随时联系 html 或 asp 文件上传控制器
      【解决方案4】:
      • 用户选择的是文件还是文件夹?
      • 该位置是在服务器上,还是在他的本地计算机上?
      • 您是要上传内容、下载内容还是只想要路径?

      如果你想要一个服务器文件或文件夹的路径,你必须让服务器给出一个可能的文件夹列表以供选择。

      如果您只需要本地文件的路径,则无法从 Web 应用程序执行此操作。

      最简单的解决方案是告诉用户在资源管理器中浏览并复制路径,然后粘贴到您的对话框中。

      【讨论】:

      • 我只想获取用户通过打开对话框打开的文件夹的路径,并且我必须将相同的路径保存到数据库,现在我正在为用户提供一个文本框来简单在本地计算机中键入他想要的路径
      • 您无法通过 Web 应用程序执行此操作,抱歉。这被认为是一种安全风险。
      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 2016-01-24
      • 1970-01-01
      相关资源
      最近更新 更多