【问题标题】:FileUpload control does not save fileFileUpload 控件不保存文件
【发布时间】:2013-11-28 23:56:29
【问题描述】:

我正在尝试上传文件但无法正常工作。我有网站和子文件夹的正确 url。我也试过fileUploader.FileNamefileUploader.SaveAs。似乎没有一个工作。它不在UpdatePanel 中。有什么想法吗?

后面的代码:

Protected Sub uploader_click(sender As Object, e As EventArgs) Handles btnUpload.Click
 If fileUploader.HasFile Then
    Dim _path As String = Path.Combine("{path to site and folder}", Server.HtmlEncode(fileUploader.PostedFile.FileName))
    Try
      fileUploader.PostedFile.SaveAs(_path)
    Catch ex As Exception
      Response.Write(ex.ToString)
    End Try
 Else
  Response.Write("No File")
 End If
End Sub 

新代码,我需要获取父文件夹来暴露子文件夹:

  Dim filePath = Path.GetFileName(fileUploader.PostedFile.FileName)
  Dim _path As String = Path.Combine(Server.MapPath("~"), "subfolder", filePath)

_path = \\{server blah}\{site}\webroot

现在没有错误,但也没有上传文件???

【问题讨论】:

  • 定义不起作用?例外?没有 PostedFile?
  • 它不会向Reponse.Write 打印任何内容,也不会保存文件。
  • 你能在IF处设置一个断点,然后一步一步来看看发生了什么吗?
  • 如果我在 localhost 上测试它,一切都适用于本地文件夹。
  • 如果它在本地主机上工作正常而在托管时不工作,那么最可能的原因是文件权限。提交文件后也可以右击页面查看源代码。您可能看不到 response.write 写入的错误,因为该页面包含大量 html 和所有内容。

标签: asp.net vb.net file-upload


【解决方案1】:

如果您使用托管服务提供商,则必须设置文件权限。如果您使用的是共享主机,则可以选择这样做。如果你可以访问 IIS,那么你可以自己做。

【讨论】:

  • 我敢打赌,我会调查的。
  • 我确实可以访问 IIS,我需要做什么?
  • 如果你确定这不是问题,那么在 web config 中关闭自定义错误模式并查看错误是否有。
  • 我在目录浏览器中启用了这个文件夹——它被禁用了。这样做后没有任何变化。
  • fileUploader.HasFile ?
【解决方案2】:

像这样修改你的第三行

Dim _path As String = Path.Combine(Server.MapPath("{Relative url of your folder within your project}"), Server.HtmlEncode(fileUploader.PostedFile.FileName))

相对 URL 应该是这样的:

"~/folder/Folder2//"  

【讨论】:

  • The SaveAs method is configured to require a rooted path
  • 我现在收到一个错误 Could not find a part of the path '\\{server blah}\{site}\{subfolder\{filename}'.,这看起来就像路径应该是 - 给出了什么?
【解决方案3】:

它终于奏效了,必须是发布和使用新文件之间的延迟 - 基于云。它在这条路径上按预期工作。

If fileUploader.HasFile Then
  Dim filePath = Path.GetFileName(fileUploader.PostedFile.FileName)
  Dim _path As String = Path.Combine(Directory.GetParent(Server.MapPath("~")).FullName, "subfolder", filePath)
  Try
    fileUploader.PostedFile.SaveAs(_path)
  Catch ex As Exception
    lb.Text = ex.Message
  End Try
Else
  lb.Text = "No File!"
End If

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2011-07-30
    • 2013-02-15
    相关资源
    最近更新 更多