1

ASP.NETでファイルのアップロードに取り組んでいます。使っ<input type=file id=upload><input type=button id="btnupload" value="File Upload">

JavaScriptでファイルをアップロードしたい。更新パネルが機能しません。ポストバックしてページを更新したくありません。

ありがとうございますが、javascriptのfileUploadに関連するコードがある場合は、私に送ってください。私を助けてください。

4

5 に答える 5

3

jQuery およびjQuery フォーム プラグインを使用できます。この組み合わせをいくつかのプロジェクトに使用しましたが、大きなファイル(10MB)でも問題はありませんでした

<form action="form.asp" method="post">
.......
</form>
$('form').submit(function(){
 $(this).ajaxSubmit(function(data){
  $('#updateDiv').html(data); // or append/prepend/whatever
 })
 return false
})

もちろん、フォームのアクションは、更新する必要があるものを返します。エラーを処理するためにいくつかの関数を追加したいかもしれませんが、これはうまくいくはずです

于 2009-02-09T12:48:04.813 に答える
0

アップロード機能にはjqueryフォームプラグインを使用します( http://www.malsup.com/jquery/form/ )指定する機能には( http://www.fyneworks.com/jquery/multiple-file-upload/ )を使用しますアップロードする複数のファイル

これがその仕組みです。フォームプラグインを使用すると、更新せずにページにデータを投稿できます。マルチファイルプラグインを使用すると、複数のファイルを参照して指定できます。

<form id="uploadForm" enctype="multipart/form-data" method="post" action="FileHandler.ashx">
<input type="hidden" value="100000" name="MAX_FILE_SIZE"/>
File:
<input type="file" name="file"/>
<input type="submit" value="Submit"/>
</form>

したがって、基本的に上記の小さなhtmlはFileHandler.ashxに送信され、入力ボックスにあるものは何でも(うまくいけば)、uraspプロジェクトにHTTPハンドラーを追加します。以下の小さなコード

<%@ WebHandler Language="C#" Class="FileHandler" %>

using System;
using System.Web;
using System.IO;

public class FileHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
string strFileName = Path.GetFileName(context.Request.Files[0].FileName);
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
string strSaveLocation = context.Server.MapPath("Upload") + "" + strFileName;
context.Request.Files[0].SaveAs(strSaveLocation);

context.Response.ContentType = "text/plain";
context.Response.Write("success");
}

public bool IsReusable
{
get
{
return false;
}
}
}

ここに欠けているのは、ur aspxページにjsスクリプトを含めることだけです、私は思います:)頑張ってください

于 2009-02-25T12:46:24.370 に答える
0

ASP.NETを使用してそれを行う「適切な」方法はわかりませんが、通常は、フォームと、フォームが投稿する非表示のiframeが必要になります。

<script type="text/javascript">
    function handleUploadResponse(...) {
        // do something...
    }
</script>
<form method="post" action="upload.aspx" target="hiddenframe" enctype="multipart/form-data"></form>
<iframe id="hiddenframe" name="hiddenframe" style="display:none"></iframe>

フォームを送信すると、非表示のフレームでアップロードを処理するスクリプトに投稿されます。完了すると、アップロードを開始した親ページwindow.parent.handleUploadResponse(...);の関数を呼び出す非表示のフレームのページが呼び出されます。handleUploadResponse()

于 2009-02-09T13:50:35.803 に答える
0

Visual Studio 2008 を使用している (または 05 に ajax がインストールされている) 場合は、更新パネルを入力フィールドの周りにラップすると、javascript (ajax) を使用してポストバックが非同期に行われます。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" />
    <asp:Button ID="Button1" runat="server" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
于 2009-02-09T12:45:34.710 に答える
-1

ページが更新されないようにする場合は、204 No ContentHTTPヘッダーを送信します。

于 2009-02-09T12:41:03.410 に答える