0

フォームとボタンのクリックに関連付けられたメソッドの起動にもかかわらず、私のファイルアップロードは値を文字列に渡しません。

ファイルアップロードにハンドラーを添付する必要がありますか?

ここにいくつかのサンプル ソースがあります。注意してください。これはプロジェクト内の唯一のコードです。ボタンやファイルのアップロードを他の場所に定義していません。

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型に変換されるためです。Web サイトを閲覧しているクライアント マシンのセキュリティを侵害する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 に答える