尽管触发了与表单和按钮单击相关联的方法,但我的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
答案 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);