しばらく前に仕事で使用しましたが、アップロードに関連するコードのみを保存しました。実際にはコードが非常に小さいことがわかりました。 ページの html/js をアップロード コードをコピー コードは次のとおりです: < ;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"< html xmlns= "http://www.w3.org/1999/xhtml" > function FinishUpload(filePath) { <BR>document.getElementById("uploadForm").reset(); <BR>if (!filePath) { <BR>alert("インポート失敗!"); <BR> } <BR>else { <BR>alert("decodeURIComponent(filePath) " に正常にインポートされました!"); <BR>} <BR>} <BR>function UploadFile() { <BR>var arr = document.getElementById ("txtFile").value.split('.'); <BR>var fileType = arr[arr.length - 1]; <BR>if (fileType.toLowerCase().indexOf("csv") < 0 ) { <BR>document.getElementById("uploadForm").reset(); <BR>alert("csv ファイルを選択してください。"); <BR>return <BR>} <BR>document .getElementById( "uploadForm").encoding = "multipart/form-data"; <BR>document.getElementById("uploadForm").submit(); <BR>} <BR>function ResetFile(file) { <BR> var tmpForm = document.createElement('form'); <BR>file.parentNode.insertBefore(tmpForm, file); <BR>tmpForm.reset(); deleteNode(false ); <BR> < /td> 🎜> ファイルアップロード処理用の C# コードをコピー コードは次のとおりです: if (context.Request.Files.Count > 0) { HttpPostedFile ファイル = context.Request.Files[0]; if (file.ContentLength > 0) { 文字列タイトル = string.Empty; タイトル = DateTime.Now.ToString("yyyyMMddHHmmss") "_" Path.GetFileName(file.FileName); /" タイトル; path = System.Web.HttpContext.Current.Server.MapPath(path); file.SaveAs(path); context.Response.Write("window. parent.FinishUpload('" HttpUtility.UrlEncode(path) "');"); } } else { context.Response.Write(" window.parent.FinishUpload('');"); } 更新を行わないための基本原則は、フォームを iframe に送信することです。 、更新が iframe で行われるようにします。フォームは、アップロードされたファイルの処理を指すようにアクションを設定し、iframe をターゲットに設定します。アップロード操作の結果は iframe に返され、親オブジェクトの FinishUpload メソッドが呼び出されて、アップロードが成功したかどうかが表示されます。したがって、AJAX が普及していないとき、この方法はリフレッシュされていない効果を隠すためによく使用され、現在でも使用できます。 次の点に注意してください: enctype="multipart/form-data" は必須であり、enctype のデフォルトのエンコーディングは "application/x-www-form-urlencoded"、set enctype="multipart/form- data"、バイナリ モードでファイルをアップロードするために使用されます。 ファイル名の文字化けや文字化けによるURL送信の不具合を防ぐため、フロントにファイル名を返す際にはHttpUtility.UrlEncodeを、フロントJSでファイル名を取得する際にはdecodeURIComponentを行ってください。 ファイル選択ボックスをリセットする場合は、ファイル選択ボックスを一時フォームに一時的に挿入し、フォームのリセットメソッドを使用してリセットする必要があります。 ちなみに、アップロードした CSV ファイルを解析するコードを貼り付けますCSV ファイルを解析しますコードをコピーします コードは次のとおりです: private DataTable ImportDataTable(string filepath) { DataTable mydt = new DataTable("myTableName"); mydt.Columns.Add("データ ID", System.Type.GetType("System.String")); mydt.Columns.Add("フィールド名", System.Type.GetType("System.String")); mydt.Columns.Add("新しい値", System.Type.GetType("System.String")); DataRow mydr; using (System.IO.StreamReader mysr = new System.IO.StreamReader(filepath)) { int data; 現在の文字; StringBuilder テキスト = new StringBuilder(); IDictionary> results = new Dictionary>(); bool isInyingHao = false; ; int lineId = 1; int インデックス = 0; while (true) { data = mysr.Read(); if (data != -1) { current = (char)data; if (current == '"') { if (isInyingHao) { isInyingHao = false; } else { if (index > 0) { text.Append(current); isInyingHao = true; } } else if (current == ', ') { if (isInyingHao) { text.Append(current); } else { SaveResult(results, lineId, text) ; インデックス = 0; 続行; } } else if (current == 'r') { if (isInyingHao) 🎜>text.Append(current); } } else if (current == 'n') { if (isInyingHao) { テキスト。 ; else { インデックス = 0; 継続; } else if (current == ' ') { } else { text.Append(current); index ; } else { //SaveResult(results, lineId, text); >foreach (int id in results.Keys) { mydr = mydt.NewRow(); for (int i = 0; i < results[id].Count; i ) { if (i > 2) { break } mydr[i] = results[id][i]; } mydt.Rows.Add(mydr); } } mydt を返します。 } private void SaveResult(IDictionary> results, int lineId, StringBuilder text) { if (!results.ContainsKey(lineId)) { results.Add(lineId, new List()); } results[lineId].Add(text.ToString()); text.Remove(0, text.Length); } 点击下ダウンロード