使用单击按钮将任何值传递给FileUpload.FileName

时间:2013-07-26 15:20:31

标签: asp.net

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

我是否需要将处理程序附加到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

2 个答案:

答案 0 :(得分:2)

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

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

必须创建一个新实例,使其显示一个空的文件名。

如果您只需要文件名而不是整个路径,您可以尝试以上操作。

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

答案 1 :(得分:1)

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

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

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

FileUpload1.SaveAs(savePath);