Asp.NET 的几个高级技巧

在ASP.NET中隐藏下载地址:

首先要将下载地址放在数据库中,表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实现多线程断点续传.

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中实现彩色光标,动画光标和自定义光标.t

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;

namespace ColorCursor
{
 /// <summary>
 /// 本例子的作用:
 /// 在.NET中实现彩色光标,动画光标和自定义光标。
 /// </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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值