1

ファイルアップロードコントロールとボタンがあります:

<asp:FileUpload ID="venfileupld" runat="server" />
<asp:Button ID="venupld1" runat="server" Text="Upload" OnClick="venupld1_Click" />

ボタンクリックイベントで私はこれを行っています:

string name = venfileupld.PostedFile.FileName;

    string filepath = Server.MapPath("upload_excel/") + name;
    venfileupld.PostedFile.SaveAs(filepath);

 writetoven();

しかし、それは私にエラーを与えています。

私の最初の質問は、なぜ私が回線上でエラーを受け取っているのかということです。

string name = venfileupld.PostedFile.FileName;

アップローダーにファイルがないことはnullになります。

そして2番目の質問は、次の名前の関数に渡すことができるファイルを取得する方法です。

 writetoven();

何か助けはありますか?

4

4 に答える 4

1

変数「name」にファイル名を割り当てる前に、アップロードコントロールにそのプロパティ「HasFile」でファイルがあることを確認する必要があります。次のリンクから最良の例を確認できます:http: //asp-net-example.blogspot.in/2008/10 /fileupload-control-example.html

于 2012-11-19T11:30:10.920 に答える
0

まず、enctype=multipart/form-dataフォームタグで使用していることを確認してください。これにより、ファイルアップロードコントロールをasp.netサーバーに投稿できるようになり、venfileupld.PostedFileオブジェクトやその他のプロパティでデータの受信が開始されます。

venfileupld.HasFileおよびプロパティを使用して、venfileupld.ContentLengthファイルがアップロードされ、0kbではないことを確認します。

- アップデート -

更新パネルを使用しているという事実に基づいて、次のようなポストバックトリガーを追加してみることができます

<トリガー>
  <asp:PostBackTrigger ControlID = "btnUploadControlId" />
 </トリガー>

-----更新の終了----

これで問題が解決しない場合は、詳細を追加してください。

于 2012-11-19T11:25:02.100 に答える
0

UpdatePanelでASP.NETAjxを使用していますか?...はい私はajaxとupdatepanelを使用しています

FileUploadは。内では機能しませんUpdatePanelASPNETAJAXコントロールツールキットのAsyncFileUploadを使用する必要があります。

詳細については、こちらをご覧ください: http: //knowledgebaseworld.blogspot.de/2009/02/file-upload-not-working-with-update.html

コントロールのUploadedCompleteイベントを処理する必要があります。AsyncFileUpload

private static List<string> allowedExtensions = new List<string>(new string[] {
".xls",
".xlsx"
});

protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
    if (e.state == AjaxControlToolkit.AsyncFileUploadState.Success) {
        string fileExt = System.IO.Path.GetExtension(e.filename);
        if (allowedExtensions.Contains(fileExt)) {
            string fileName = System.IO.Path.GetFileName(e.filename);
            string dir = Server.MapPath("upload_excel/");
            string path = Path.Combine(dir, fileName);
            AsyncFileUpload1.PostedFile.SaveAs(path);
            AsyncFileUpload1.FileContent.Close();
        } else {
            // wrong extension
        }
    } else {
        // log and show error
    }
}
于 2012-11-19T11:29:40.983 に答える
0

以下を試してください:

背後にあるコード:

protected void venupld1_Click(object sender, EventArgs e)
    {
        string name = venfileupld.FileName;
        string filepath = Server.MapPath("~/upload_excel/") + name;
        venfileupld.PostedFile.SaveAs(filepath);
     }

インラインコード:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"  UpdateMode="conditional">
    <ContentTemplate>
    <asp:FileUpload ID="venfileupld" runat="server" />
    <asp:Button ID="venupld1" runat="server" Text="Upload" OnClick="venupld1_Click" />
    </ContentTemplate>
    <Triggers>
    <asp:PostBackTrigger ControlID="venupld1" />
    </Triggers>
 </asp:UpdatePanel>

お役に立てれば。

于 2012-11-19T11:46:12.283 に答える