ホームページ  >  記事  >  ウェブフロントエンド  >  asp.net js は、refreshing_javascript スキルなしで CSV ファイルをアップロードおよび解析するためのコードを実装します

asp.net js は、refreshing_javascript スキルなしで CSV ファイルをアップロードおよび解析するためのコードを実装します

WBOY
WBOYオリジナル
2016-05-16 18:27:061150ブラウズ

しばらく前に仕事で使用しましたが、アップロードに関連するコードのみを保存しました。実際にはコードが非常に小さいことがわかりました。
ページの 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" >








🎜>




ファイルアップロード処理用の 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("<script>window. parent.FinishUpload('" HttpUtility.UrlEncode(path) "');</script>"); } }
else
{
context.Response.Write(" <script>window.parent.FinishUpload('');</script>");
}


更新を行わないための基本原則は、フォームを 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);
}



点击下ダウンロード
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

< /td>