0

尽管触发了与表单和按钮单击相关的方法,但我的 fileupload 不会将值传递给字符串,我是否在做明显错误的事情(或者一般来说只是错误的)?

我是否需要将处理程序附加到文件上传

这是一些示例源代码,请注意,它是项目中唯一的代码,我没有对其他任何地方的按钮或文件上传进行任何定义:

Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub Button_Click()

        Dim FileUpload1 As New FileUpload()

        Dim X As String = FileUpload1.FileName

        Response.Write(X)

     End Sub

End Class

和形式:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb"    Inherits="Test.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">

    <asp:FileUpload ID="FileUpload1" runat="server" />
    <asp:Button ID="Button1" runat="server" OnClick="Button_Click" text="Submit"/>
  <%--  <input type="file" />--%>

</form>
</body>
</html>

在尝试 FileUpload.HasFile 之后,似乎我不仅无法获得文件名(在下面的答案中向我描述),而且当文件与之关联时,FileUpload.HasFile 什么也不是,有什么原因吗为了这?

Protected Sub Button_Click()

    Dim FileUpload1 As New FileUpload()

    'Dim X As String = FileUpload1.FileName

    'Response.Write(X)

    If (FileUpload1.HasFile) Then
        ' Do Something
        ' SaveFile(FileUpload1.PostedFile)
    Else

    End If

End Sub
4

2 回答 2

2

如果您正在客户端计算机中查找上传文件的路径,出于安全原因,这是不允许的。但是,您应该能够使用该属性仅获取文件名。当我想测试以查看上传的文件类型时,我会FileName检查我的应用程序中的文件名。

Protected Sub Button_Click() 我认为您的函数 中不需要以下行:Dim FileUpload1 As New FileUpload()

那一定是创建一个新实例,导致它向您显示一个空的文件名。

如果您只需要文件名不是整个路径,则可以尝试上述方法。

编辑:刚刚看到对您的问题的编辑。我要求您删除的行也可能导致HasFile属性为空。

于 2013-07-26T15:41:43.700 回答
1

您不能传递/分配名称 asp:FileUpload,因为由于安全原因,它被转换为不允许的input类型。file因为它可能会破坏正在浏览网站的客户端计算机的安全性。为其分配值的唯一可能性是通过用户选择,即用户从客户端(浏览器)浏览和分配文件

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.saveas.aspx

您可以使用FileUpload.SaveAs方法来保存选定的文件。

FileUpload1.SaveAs(savePath);
于 2013-07-26T15:21:46.690 回答