ASP.NETでファイルのアップロードに取り組んでいます。使っ<input type=file id=upload>
て<input type=button id="btnupload" value="File Upload">
JavaScriptでファイルをアップロードしたい。更新パネルが機能しません。ポストバックしてページを更新したくありません。
ありがとうございますが、javascriptのfileUploadに関連するコードがある場合は、私に送ってください。私を助けてください。
ASP.NETでファイルのアップロードに取り組んでいます。使っ<input type=file id=upload>
て<input type=button id="btnupload" value="File Upload">
JavaScriptでファイルをアップロードしたい。更新パネルが機能しません。ポストバックしてページを更新したくありません。
ありがとうございますが、javascriptのfileUploadに関連するコードがある場合は、私に送ってください。私を助けてください。
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
})
もちろん、フォームのアクションは、更新する必要があるものを返します。エラーを処理するためにいくつかの関数を追加したいかもしれませんが、これはうまくいくはずです
アップロード機能には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スクリプトを含めることだけです、私は思います:)頑張ってください
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()
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>
ページが更新されないようにする場合は、204 No Content
HTTPヘッダーを送信します。