ajaxFileUpload.js 簡単に作れるので同じ名前がたくさんあります。
私はこれを使用します: https://github.com/carlcarl/AjaxFileUpload
ダウンロードアドレスはここです: http://files.cnblogs.com/files/kissdodog/ajaxfileupload_JS_File.rar
AjaxFileUpload.js は A ではありません非常に有名なプラグインですが、他の人が作成して誰でも使用できるようにリリースされているだけで、その原理は、非表示のフォームと iframe を作成し、JS を使用してそれらを送信し、戻り値を取得することです。
私は元々非同期アップロード関数を作成しましたが、その設定方法が jQuery の AJAX に似ており、非常に気に入っていたため、これを選択しました。
コメントで言われていることは良くありません。それは、同じ js を使用していないためです。 github で AjaxFileUpload を検索すると、同様の JS がたくさん見つかりました。
ajaxFileUpload は、非同期ファイルアップロード用の jQuery プラグインです
不明なバージョンをアップロードできるため、今後どこでもそれを探す必要がなくなります。
構文:$.ajaxFileUpload([options])
オプションパラメータの説明:
1, url アップロードハンドラーのアドレス。
2, fileElementId アップロードする必要があるファイル フィールドの ID、つまり の ID。
3, secureuri 安全な送信を有効にするかどうか、デフォルトは false です。
4, dataType サーバーから返されるデータ型。 XML、スクリプト、JSON、HTML を使用できます。入力しない場合は、jQuery が自動的に判断します。
5、成功 送信成功後に自動的に実行される処理関数です。パラメータデータはサーバーから返されるデータです。
6、エラー 送信失敗時に自動的に実行される処理関数。
7、データ カスタムパラメータ。アップロードした画像に関連するデータがある場合は、こちらの方が便利です。
8、タイプ エラープロンプト:
1, SyntaxError: missing; before state error
このエラーが発生した場合は、URL パスにアクセスできるかどうかを確認する必要があります2, SyntaxError: 構文エラー
このエラーが発生した場合は、に送信操作を処理するサーバー バックグラウンド ハンドラーに構文エラーがあるかどうかを確認します
3、SyntaxError: 無効なプロパティ ID エラー
このエラーが発生した場合は、テキスト フィールドのプロパティ ID が存在するかどうかを確認する必要があります
4 、SyntaxError: missing } XML 式エラー
このエラーが発生した場合は、ファイル名が一致しているか存在しないかを確認する必要があります
5、その他のカスタム エラー
変数 $error を使用して直接出力し、各パラメータが正しいかどうかを比較できます。上記の無効なエラー プロンプトはさらに便利です。
使用法:
ステップ 1: まず、jQuery プラグインと ajaxFileUpload プラグインを導入します。言うまでもなく、これはすべてのプラグインに当てはまります。
<script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="ajaxfileupload.js" type="text/javascript"></script>
ステップ 2: HTML コード:
<body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body>
ステップ 3: JS コード
<script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="ajaxfileupload.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $(":button").click(function () { ajaxFileUpload(); }) }) function ajaxFileUpload() { $.ajaxFileUpload ( { url: '/upload.aspx', //用于文件上传的服务器端请求地址 secureuri: false, //是否需要安全协议,一般设置为false fileElementId: 'file1', //文件上传域的ID dataType: 'json', //返回值类型 一般设置为json success: function (data, status) //服务器成功响应处理函数 { $("#img1").attr("src", data.imgurl); if (typeof (data.error) != 'undefined') { if (data.error != '') { alert(data.error); } else { alert(data.msg); } } }, error: function (data, status, e)//服务器响应失败处理函数 { alert(e); } } ) return false; } </script>
ステップ 4: バックエンド ページの Upload.aspx コード:
protected void Page_Load(object sender, EventArgs e) { HttpFileCollection files = Request.Files; string msg = string.Empty; string error = string.Empty; string imgurl; if (files.Count > 0) { files[0].SaveAs(Server.MapPath("/") + System.IO.Path.GetFileName(files[0].FileName)); msg = " 成功! 文件大小为:" + files[0].ContentLength; imgurl = "/" + files[0].FileName; string res = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}"; Response.Write(res); Response.End(); } }
MVC バージョンの例を見てみましょう:
コントローラー コード
public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Upload() { HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files; string imgPath = ""; if (hfc.Count > 0) { imgPath = "/testUpload" + hfc[0].FileName; string PhysicalPath = Server.MapPath(imgPath); hfc[0].SaveAs(PhysicalPath); } return Content(imgPath); } }
Front -end ビュー、HTML および JS コード、アップロードが成功した後、画像の実際のアドレスを返し、それを
<body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body>
の SRC アドレスにバインドします。最後に、パラメーターを使用して画像をアップロードする例を示します: コントローラー コード:
public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Upload() { NameValueCollection nvc = System.Web.HttpContext.Current.Request.Form; HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files; string imgPath = ""; if (hfc.Count > 0) { imgPath = "/testUpload" + hfc[0].FileName; string PhysicalPath = Server.MapPath(imgPath); hfc[0].SaveAs(PhysicalPath); } //注意要写好后面的第二第三个参数 return Json(new { Id = nvc.Get("Id"), name = nvc.Get("name"), imgPath1 = imgPath },"text/html", JsonRequestBehavior.AllowGet); } }
インデックスビューコード:
<body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body>