我的网络应用程序需要能够接受文件名/路径到文件 - 该文件将位于客户端计算机和网络服务器都可用的网络资源上。
在之前的帖子中,Rajkumar Reddy提出了这个策略:
添加windows openfile对话框参考toweb应用程序,点击解决方案探索>项目名称添加参考system.windows.forms然后按照这种编码风格在这里我有>给出vb示例代码你可以将它转换为c#如果你面对任何问题都告诉我。
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
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
我将这两个sub添加到了一个aspx页面 - 我可以打开openfiledialog。我可以将文件名/路径转换为共享变量。但是,我无法使用返回的信息自动更新页面。
我有更多可以发布的代码 - 但是,我不确定哪个部分不起作用。
答案 0 :(得分:1)
这根本不起作用。
仅当Web服务器和Web客户端是同一台计算机时,即仅在您自己的计算机上本地测试Web应用程序时,才能在Web应用程序中显示文件对话框。
在服务器上部署Web应用程序时,对话框将在Web服务器上打开,而不是计算机上网,但Web服务器没有可以显示对话框的用户界面。
此外,即使您在本地运行Web应用程序,它也不起作用。当您为对话框启动新线程时,Web服务器将完成页面并将其发送到浏览器。选择文件后,Page
对象不再存在。响应已经发送到浏览器,因此更改它为时已晚。