【问题标题】:FileUpload in .NET not saving image.NET中的文件上传不保存图像
【发布时间】:2009-09-03 14:21:08
【问题描述】:

这是我的代码

Dim amPhotoPath As String = "\graphics\Profiles\" & ViewState("fileName")
personalPhotoUpload.SaveAs(Server.MapPath("~") & amPhotoPath)

由于某种原因,图像没有保存..如果我调试代码,并在 Quickwatch 中获取 URL,文件夹会打开,所以路径是正确的,但它只是没有保存!我刚刚设置了权限,因为我认为是因为这个,但无济于事!我不知道这里出了什么问题,我错过了什么?

谢谢大家

【问题讨论】:

  • 视图状态只是图像名称...
  • 您是否有任何异常或图像根本没有保存?调试时 ViewState("fileName") 的值是多少?
  • viewstate 具有实际的图像名称,它不为空或会产生问题的东西。它根本没有给出任何错误......它只是不保存:s
  • FileUpdload 控件的 InputStream 是否非空? IE。它有一个有效的文件吗?
  • 你有异常吗?如果没有,那么我们需要查看更多代码。

标签: .net asp.net file-upload


【解决方案1】:

查看msdn example。您需要使用 FileUpload 控件的属性来检查 FileUpload 控件是否有文件,然后使用 PostedFile 属性来获取您的文件名。

【讨论】:

  • +1 好主意,先按照标准示例,如果您不确定它是如何工作的,请自定义。
【解决方案2】:

试试这个:

Dim amPhotoPath As String = Path.Combine(Server.MapPath("/graphics/Profiles"), ViewState("filename"))
personalPhotoUpload.SaveAs(amPhotoPath)

我不确定你的视图状态是什么,但至少这就是为什么在调试时验证你的路径会更容易。

【讨论】:

    【解决方案3】:

    您是否验证了 personalPhotoUpload.C​​ontentLength() > 0 ?

    如果不是,那是你的问题。如果您的文件字节数为零,则没有上传文件。

    摘自this文档页面:

    FileUpload 控件不 自动读取文件 客户。您必须明确提供 允许用户的控制或机制 提交指定的文件。为了 例如,您可以提供一个按钮 用户可以点击上传文件。 您编写的用于保存 指定的文件可以调用 FileBytes 属性,它返回 文件的内容。

    在调用 FileBytes 属性之前, 你应该使用 HasFile 属性 验证 FileUpload 控件 包含要上传的文件。如果 HasFile 返回 true,调用 FileBytes 属性。如果它返回 false,向用户显示一条消息 表示控件没有 包含一个文件。如果您不提供 错误处理代码来验证一个 文件存在,尝试保存 不存在的文件抛出一个 HttpException 异常。

    【讨论】:

    • fileupload的filebytes,是0...什么意思?
    猜你喜欢
    • 2011-11-10
    • 2021-12-23
    • 1970-01-01
    • 2020-01-14
    • 2013-10-20
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多