Asp.NET 的几个高级技巧
在ASP.NET中隱藏下載地址:
首先要將下載地址放在數(shù)據(jù)庫中,表TabMailAttachFiles中的FileVisualPath字段存儲為真實地址。
string sel_sql="select FileVisualPath from TabMailAttachFiles where FileID="+Request.QueryString["destFileName"].ToString();
//?? string destFileName = Request.QueryString["destFileName"]!=null?Request.QueryString["destFileName"]:"";
?? string destFileName=I_SQL.Execad(sel_sql).Tables[0].Rows[0][0].ToString();
?? destFileName = Server.MapPath(".")+destFileName;
?? destFileName = Server.UrlDecode(destFileName);
?? if(File.Exists(destFileName))
?? {
??? FileInfo fi = new FileInfo(destFileName);
??? Response.Clear();
??? Response.ClearHeaders();
??? Response.Buffer = false;
???
??? //Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.Default));
??? Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(Path.GetFileName(destFileName),System.Text.Encoding.UTF8));
??? Response.AppendHeader("Content-Length",fi.Length.ToString());
??? Response.ContentType="application/octet-stream";
??? Response.WriteFile(destFileName);
??? Response.Flush();
??? Response.End();
?? }
?? else
?? {
??? Response.Write("<script langauge=javascript>alert('文件不存在!');history.go(-1);</script>");
??? Response.End();
?? }
Asp.net實現(xiàn)多線程斷點續(xù)傳.
System.IO.Stream iStream = null;
// Buffer to read 10K bytes in chunk:
byte[] buffer = new Byte[10240];
// Length of the file:
int length;
// Total bytes to read:
long dataToRead;
// Identify the file to download including its path.
string filepath? = @"E:\software\SQL Server 2000 Personal Edition.ISO";
// Identify the file name.
string? filename? = System.IO.Path.GetFileName(filepath);
try
{
?// Open the file.
?iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
??System.IO.FileAccess.Read,System.IO.FileShare.Read);
?Response.Clear();
?// Total bytes to read:
?dataToRead = iStream.Length;
?long p = 0;
?if(Request.Headers["Range"]!=null)
?{
??Response.StatusCode = 206;
??p = long.Parse( Request.Headers["Range"].Replace("bytes=","").Replace("-",""));
?}
?if(p != 0)
?{
??Response.AddHeader("Content-Range","bytes " + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());???????????????????
?}
?Response.AddHeader("Content-Length",((long)(dataToRead-p)).ToString());
?Response.ContentType = "application/octet-stream";
?Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)));
?iStream.Position = p;
?dataToRead = dataToRead - p;
?// Read the bytes.
?while (dataToRead > 0)
?{
??// Verify that the client is connected.
??if (Response.IsClientConnected)
??{
???// Read the data in buffer.
???length = iStream.Read(buffer, 0, 10240);
???// Write the data to the current output stream.
???Response.OutputStream.Write(buffer, 0, length);
???// Flush the data to the HTML output.
???Response.Flush();
???buffer= new Byte[10240];
???dataToRead = dataToRead - length;
??}
??else
??{
???//prevent infinite loop if user disconnects
???dataToRead = -1;
??}
?}
}
catch (Exception ex)
{
?// Trap the error, if any.
?Response.Write("Error : " + ex.Message);
}
finally
{
?if (iStream != null)
?{
??//Close the file.
??iStream.Close();
?}
?Response.End();
}??
在.NET中實現(xiàn)彩色光標,動畫光標和自定義光標.t
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
namespace ColorCursor
{
?/// <summary>
?/// 本例子的作用:
?/// 在.NET中實現(xiàn)彩色光標,動畫光標和自定義光標。
?/// </summary>
?public class Form1 : System.Windows.Forms.Form
?{
??[DllImport("user32.dll")]
??public static extern IntPtr LoadCursorFromFile( string fileName );
??
??[DllImport("user32.dll")]
??public static extern IntPtr SetCursor( IntPtr cursorHandle );
??
??[DllImport("user32.dll")]
??public static extern uint DestroyCursor( IntPtr cursorHandle );
??
??
??[STAThread]
??static void Main()
??{
??Application.Run(new Form1());
??}
??
??public Form1()
??{
??this.Text = "歡迎光臨【孟憲會之精彩世界】:http://dotnet.aspx.cc/";
??Cursor myCursor = new Cursor(Cursor.Current.Handle);
??//dinosau2.ani為windows自帶的光標:
??IntPtr colorCursorHandle = LoadCursorFromFile(@"C:\WINNT\Cursors\dinosau2.ani" );
??myCursor.GetType().InvokeMember("handle",BindingFlags.Public |
???BindingFlags.NonPublic | BindingFlags.Instance |
???BindingFlags.SetField,null,myCursor,
???new object [] { colorCursorHandle } );
??this.Cursor = myCursor;
??}
?}
}
在圖片上寫字.
//下面的代碼的作用是:從剪貼板取出圖片,寫上字,然后保存到文件d:\filename.jpg
Image bmap;
IDataObject data = System.Windows.Forms.Clipboard.GetDataObject();
bmap = (Image)(data.GetData(typeof(System.Drawing.Bitmap)));
Graphics g = Graphics.FromImage(bmap);
SolidBrush drawBrush = new SolidBrush(Color.Red);
Font drawFont = new Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Millimeter);
int xPos = bmap.Height - ( bmap.Height-25 );
int yPos = 3;
g.DrawString ("您要寫的文字", drawFont, drawBrush, xPos, yPos);
string sPicPath? = "d:\\filename.jpg";
string sPreFix? = "d:\\xxx";
Image smBmap ;
smBmap = bmap.GetThumbnailImage(bmap.Width, bmap.Height, null, System.IntPtr.Zero);
smBmap.Save(sPicPath, System.Drawing.Imaging.ImageFormat.Jpeg);
bmap.Save(sPreFix + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmap = null;
smBmap = null;
總結
以上是生活随笔為你收集整理的Asp.NET 的几个高级技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国@代码生成技术@国产
- 下一篇: 闲话WPF之五(XAML中的类型转换)