ランダムな確認コードを生成し、画像ファイルをアップロードし、HTMLを解析し、

1.画像は、ランダムコードを生成

 1.1ページには、ランダムな認証コード方式を生成createvalidatecode呼び出します。

<DIV CLASS = "inputLine">
<ラベル>
验证码</ label>はの<input type = "text" MAXLENGTH = "4"オートコンプリート= "オフ"名前= "verifycode"スタイル= "IMEモード:無効;幅: 40ピクセル;」
ID = "verifycode"クラス= "reg_in_text"> <IMGのonclick = "refreshVerify()" ALT = "点击刷新" ID = "チェックコード" SRC = "/ホーム/ createvalidatecode">
看不清?<のhref = "javascriptの:refreshVerify() ">换一张</a>の
</ div>

 1.2にHomeController。createvalidatecode実装。

//コード画像を生成し、検証結果を返し
パブリックValidateCodeGenerator CreateValidateCodeを()
{
VARのNUM = 0;
文字列randomText SelectRandomNumber =(5、NUM OUT);
セッション[ "ValidateCode"]はNUMを=。
ValidateCodeGenerator vlimg新しい新しいValidateCodeGenerator =()
{
背景色Color.FromKnownColor =(KnownColor.LightGray)、
RandomWord = randomText、
ImageHeight = 25、
ImageWidthしません= 100、
のfontSize = 14、
};
戻りvlimg;
}

 

1.2.1 createvalidatecode生成された画像の確認コードの種類:

ValidateCodeGeneratorクラス公開:のActionResult
{
/// <まとめ>
///背景色
/// </要約>
パブリックカラーBACKGROUNDCOLOR {取得または設定し}
/// <まとめ>
///ランダム文字
/// </要約>
パブリック文字列RandomWord {取得または設定;}
/// <まとめ>
///画像幅
/// </要約>
公共のINT {ImageWidthは得られないであろう。SET;}
/// <まとめ>
///像高
@ / </要約>
ImageHeight INT公共{取得または設定;}
/// <まとめ>
///フォントサイズ
/// </要約>
のfontSize INT公共{取得または設定;}

パブリックオーバーライドボイドExecuteResult(ControllerContextコンテキスト)
{
のOnPaint(コンテキスト)。
}

静的な文字列[] FontItems =新しい文字列[] { "のTahoma"、 "MS Pゴシック"、 "Consolas"、 "のTimes New Roman"};
静的ブラシ[] BrushItems =新しいブラシ[] {Brushes.OliveDrab、Brushes.ForestGreen、Brushes.DarkCyan、Brushes.LightSlateGray、Brushes.RoyalBlue、Brushes.SlateBlue、Brushes.DarkViolet、Brushes.MediumVioletRed、Brushes.IndianRed、Brushes.Firebrick 、Brushes.Chocolate、Brushes.Peru}。
静的カラー[] ColorItems =新しい色[] {Color.Green、Color.Blue、Color.grayの、Color.Red、Color.Black、Color.Orange、Color.OrangeRed、Color.Silver}。
プライベートint型_brushNameIndex。

ランダム_random =新しいランダム(DateTime.Now.GetHashCode());

/// <要約>
///取一个随机字体
/// </要約>
/// <戻る> </戻り>
プライベートフォントGETFONT()
{
int型fontIndex = _random.Next(0、FontItems.Length)。
新しいフォントを返す(FontItems [fontIndex]のfontSize、GetFontStyle())。
}

/// <要約>
///取一个随机字体样式
/// </要約>
/// <戻る> </戻り>
プライベートのfontStyle GetFontStyle()
{
スイッチ(DateTime.Now.Second%2)
{
ケース0 :
FontStyle.Regular戻ります| FontStyle.Bold;
ケース1:
FontStyle.Italicを返します| FontStyle.Bold;
デフォルト:
FontStyle.Regularを返します| FontStyle.Bold | FontStyle.Strikeout;
}
}

/// <要約>
///取一个随机笔刷
/// </要約>
/// <戻る> </戻り>
プライベートブラシGetBrush()
{
_brushNameIndex = _random.Next(0、BrushItems.Length)。
BrushItems [_brushNameIndex]を返します。
}

/// <要約>
///获取随机颜色
/// </要約>
/// <戻る> </戻り>
プライベートカラーGETCOLOR()
{
int型のColorIndex = _random.Next(0、ColorItems.Length)。
ColorItems [のColorIndex]を返します。
}

/// <要約>
///绘画背景色
/// </要約>
/// <PARAM NAME = "G"> </ PARAM>
プライベートボイドPaint_Background(グラフィックスG)
{
g.Clear(背景色)。
}

/// <要約>
///绘画边框
/// </要約>
/// <PARAM NAME = "G"> </ PARAM>
プライベートボイドPaint_Border(グラフィックスG)
{
g.DrawRectangle(Pens.DarkGray、0 、0、ImageWidth - 1、ImageHeight - 1)。
}

/// <要約>
///绘画文字
/// </要約>
/// <PARAM NAME = "G"> </ PARAM>
プライベートボイドPaint_Text(グラフィックスG、文字列テキスト)
{
int型、X = 1、Y = 1;
ブラシのブラシ= GetBrush()。
以下のために(INT i = 0; iはtext.Lengthを<; iは++)
{
X = ImageWidth / text.Length * I - 2。
Y = _random.Next(0,5)。
g.DrawString(text.Substring(I、1)、GETFONT()、ブラシ、X、Y)
}

}

/// <要約>
///绘画噪音点
/// </要約>
/// <PARAM NAME = "B"> </ PARAM>
プライベートボイドPaint_Stain(ビットマップB)
{
ため(INT n = 0であり、n <(ImageWidth * ImageHeight / 40)であり; n ++)
{
int型のx = _random.Next(0、ImageWidth)。
Y INT = _random.Next(0、ImageHeight)。
b.SetPixel(X、Y、GETCOLOR())。
}
}

/// <要約>
///画笔事件
/// </要約>
/// <PARAM NAME = "コンテキスト"> </ PARAM>
プライベートボイドのOnPaint(ControllerContextコンテキスト)
{
ビットマップoBitmap = NULL;
グラフィックG = NULL;

試す
{
oBitmap =新しいビットマップ(ImageWidth、ImageHeight)。
G = Graphics.FromImage(oBitmap)。

Paint_Background(G)。
Paint_Text(G、RandomWord)。
Paint_Stain(oBitmap)。
// Paint_Border(G)。

context.HttpContext.Response.ContentType = "画像/ GIF"。
oBitmap.Save(context.HttpContext.Response.OutputStream、ImageFormat.Gif)。
g.Dispose();
oBitmap.Dispose();
}
キャッチ
{
context.HttpContext.Response.Clear()。
context.HttpContext.Response.Write( "ERR!");
context.HttpContext.Response.End();
}
最後に
{
IF(!= NULL oBitmap)
oBitmap.Dispose();
(!ヌル=グラム)の場合
g.Dispose();
}
}

}

 

 

2点のアップロード写真、文書

パブリッククラスUpLoadController:BaseController
{
[HttpPost]
公共ContentResult UpLoadImage()
{
しようと
{
varファイル= Request.Files [ "imgFileを"];
文字列nameImg = DateTime.Now.ToString( "yyyyMMddHHmmssfff");
ストリングresourceSiteUrl = ConfigurationManager.AppSettings [ "ResourceSiteUrl"]のToString()。
ストリングresourceSitePostUrl = ConfigurationManager.AppSettings [ "ResourceSitePostUrl"]のToString()。
ストリングupLoadFile = ConfigurationManager.AppSettings [ "UpLoadFile"]のToString()。
ストリングupLoadPostPath = ConfigurationManager.AppSettings [ "UpLoadPostPath"]のToString()。
nameImg + = file.FileName.Substring(file.FileName.LastIndexOf() "")TOLOWER()。
文字列のURL = String.Formatの( "{0} {1} {2}"、resourceSiteUrl、upLoadFile、nameImg)。

upLoadFile = "/" + ConfigurationManager.AppSettings [ "WebSiteEName"]のToString()+ upLoadFile。

ストリングpostUrl = String.Formatの( "?= {2}&upLoadFile = {3} {0} {1}ファイル名"、resourceSitePostUrl、upLoadPostPath、nameImg、upLoadFile)。

HttpWebRequestの要求=(HttpWebRequestの)WebRequest.Create(postUrl)。
request.Method = "POST";
request.AllowAutoRedirect = falseは、
request.ContentTypeは=「マルチパート/フォームデータ」。
バイト[]バイト=新しいバイト[file.InputStream.Length]。
file.InputStream.Read(バイト0、(INT)file.InputStream.Length)。
request.ContentLength = bytes.Length。
使用(ストリームrequestStream = request.GetRequestStream())
{
requestStream.Write(バイト0、bytes.Length)。
}
HttpWebResponseのrespon =(HttpWebResponseの)request.GetResponse();
Hashtableのハッシュ=新しいHashtableの();
[ "エラー"]ハッシュ= 0。
[ "URL"を]ハッシュ= URL;
コンテンツを返す(System.Web.Helpers.Json.Encode(ハッシュ)、「text / htmlの。

}
キャッチ(例外例)
{
VARライタ= Common.Log.LogWriterGetter.GetLogWriter()。
writer.Write( "UploadFiles"、 "-Admin_Upload"、EX);
EXを投げます。
}
}

 

パブリックストリングUpLoadFile(列fromFilePath、文字列toFilePath、文字列filename)
{
fromFilePath = "/Xml/test.xml"。
toFilePath = "/アップロード/ uploadimages /";
試す
{
のFileInfo Fiを=新しいのFileInfo(fromFilePath)。
FileStreamをFS = fi.OpenRead()。
ストリングresourceSiteUrl = ConfigurationManager.AppSettings [ "ResourceSiteUrl"]のToString()。

"?ファイル名=" 文字列postUrl = resourceSiteUrl + "/UpLoad/upload_json.aspx" + + + fileNameに "&upLoadFile =" + toFilePath。

HttpWebRequestの要求=(HttpWebRequestの)WebRequest.Create(postUrl)。
request.Method = "POST";
request.AllowAutoRedirect = falseは、
request.ContentTypeは=「マルチパート/フォームデータ」。
バイト[]バイト=新しいバイト[fs.Length]。
fs.Read(バイト0、(INT)fs.Length)。

request.ContentLength = bytes.Length。
使用(ストリームrequestStream = request.GetRequestStream())
{
requestStream.Write(バイト0、bytes.Length)。
}
HttpWebResponseのrespon =(HttpWebResponseの)request.GetResponse();
Hashtableのハッシュ=新しいHashtableの();
[ "エラー"]ハッシュ= 0。
[ "URL"] = toFilePath +ファイル名をハッシュ。

//コンテンツを返す(System.Web.Helpers.Json.Encode(ハッシュ)、 "text / htmlのを;のcharset = UTF-8");
「」を返します。

}
キャッチ(例外例)
{
EXを投げます。
}
}

}

おすすめ

転載: www.cnblogs.com/csj007523/p/11442979.html
おすすめ