Dim regx As New Regex("http(s)?://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?", RegexOptions.IgnoreCase)
Dim mactches As MatchCollection = regx.Matches(MyString)
For Each match As Match In mactches
MyString= MyString.ToString.Replace(match.Value, "<a href='" & match.Value & "' target='_blank' >" & match.Value & "</a>")
Next
參考文章:
http://weblogs.asp.net/farazshahkhan/regex-to-find-url-within-text-and-make-them-as-link
http://www.dotblogs.com.tw/jameswu/archive/2008/04/22/3009.aspx
http://www.allenkuo.com/EBook5/view.aspx?TreeNodeID=67&id=209
http://blog.xuite.net/xiaolian/blog/59321149-%E3%80%90C%23%E3%80%91%E5%AD%97%E4%B8%B2%E6%9C%89%E6%95%88%E8%BD%89%E6%88%90%E8%B6%85%E9%80%A3%E7%B5%90
http://smallpoint-program.blogspot.tw/2012/08/phpemail.html
1.製作16x16的ICON圖
2.將以下的程式碼放位<head></head>之間
方式1:
<link rel="icon" href="/favicon1.ico" type="image/x-icon" />
方式2:
<link rel="shortcut icon" href="/favicon1.ico" type="image/x-icon" />
參考資料:http://www.tshopping.com.tw/thread-164857-1-1.html
2.將以下的程式碼放位<head></head>之間
方式1:
<link rel="icon" href="/favicon1.ico" type="image/x-icon" />
方式2:
<link rel="shortcut icon" href="/favicon1.ico" type="image/x-icon" />
參考資料:http://www.tshopping.com.tw/thread-164857-1-1.html
Dim DirInfo As DirectoryInfo = New DirectoryInfo("c:\test")
For Each File In DirInfo.GetFiles("test.*")
Response.Write("Name=" & File .Name & "<BR>")
Next
參考資料:
http://fecbob.pixnet.net/blog/post/38610253-vb.net%E6%AA%A2%E6%9F%A5%E6%AA%94%E6%A1%88%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%8F%8A%E5%88%AA%E9%99%A4%E6%AA%94%E6%A1%88
http://www.programmer-club.com.tw/showSameTitleN/vbdotnet/10081.html
For Each File In DirInfo.GetFiles("test.*")
Response.Write("Name=" & File .Name & "<BR>")
Next
參考資料:
http://fecbob.pixnet.net/blog/post/38610253-vb.net%E6%AA%A2%E6%9F%A5%E6%AA%94%E6%A1%88%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%8F%8A%E5%88%AA%E9%99%A4%E6%AA%94%E6%A1%88
http://www.programmer-club.com.tw/showSameTitleN/vbdotnet/10081.html
1.利用CreateUserWizard 建立使用者帳號,同時將其他資料儲存在自已建立的table內,不使用aspnetdb的Profiles時
2.需要在CreatedUser後儲存資料但又必需要確認是否有正確儲存的方式。
3.如果未儲存成功,刪除已註冊的使用者帳號,並且顯示錯誤訊息。
幾個重點如下:
protected void RegisterUser_CreatedUser(object sender, EventArgs e)
{
Result = AddUserProfile(userProfile);
if (Result == true){ return true;} else{
Membership.DeleteUser(RegisterUser.UserName); HttpContext.Current.Items.Add("ErrorMessage", "註冊失敗,請聯繫系統管理員!!");
Server.Transfer(Request.Url.PathAndQuery, true);
}
}
protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) { if (HttpContext.Current.Items["ErrorMessage"] != null) { CustomValidator custValidator = (CustomValidator)RegisterUserWizardStep.ContentTemplateContainer.FindControl("CustomValidator1"); custValidator.ErrorMessage = HttpContext.Current.Items["ErrorMessage"].ToString(); custValidator.IsValid = false; e.Cancel = true; }}
<asp:CreateUserWizardStep runat="server" ID="RegisterUserWizardStep"> <ContentTemplate>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ValidationGroup="RegisterUserWizardStep" />
參考資料:http://stackoverflow.com/questions/10277812/cancel-createuserwizard-from-createduser-event</ContentTemplate></asp:CreateUserWizardStep>
原本使用的下載方式會造成 檔案下載時檔案名稱亂碼。
因此變更檔案下載的方式,並且將檔案名稱做UrlEncode。
Dim filePath As String = "c:/123檔案.txt"
byteFile = wc.DownloadData(filePath)
Response.AppendHeader("content-disposition", "attachment;filename=" + "123檔案名稱")
HttpContext.Current.Server.UrlEncode(docPhysicalName)
Response.ContentType = "application/octet-stream"
Response.BinaryWrite(byteFile)
Response.End()
參考資料:
http://bob.logdown.com/posts/94996-aspnet-file-download
Response.WriteFile 檔案下載方式一
## System.Net.WebClient.DownloadData 檔案下載方式二
因此變更檔案下載的方式,並且將檔案名稱做UrlEncode。
Dim filePath As String = "c:/123檔案.txt"
Dim wc As WebClient = New WebClient()
Dim byteFile() As Byte = NothingbyteFile = wc.DownloadData(filePath)
Response.AppendHeader("content-disposition", "attachment;filename=" + "123檔案名稱")
HttpContext.Current.Server.UrlEncode(docPhysicalName)
Response.ContentType = "application/octet-stream"
Response.BinaryWrite(byteFile)
Response.End()
參考資料:
http://bob.logdown.com/posts/94996-aspnet-file-download
Response.WriteFile 檔案下載方式一
using System.IO;
string filePath = "C:/porn.jpg";
FileInfo file = new FileInfo(filePath);
Response.Clear()
Response.Buffer = false;
Response.ContentType = "application/octet-stream"; // 指定檔案類型
Response.AddHeader("Content-Disposition","attachment;filename="+"porn.jpg"); // 設定檔名
// System.Web.HttpUtility.UrlEncode(newFileName, System.Text.Encoding.UTF8) 解決中文檔名亂碼
Response.AppendHeader("Content-Length", file.Length.ToString()); // 表頭加入檔案大小
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
using System.Net;
WebClient wc = new WebClient();
byte[] byteFile = null;
string path = "C:/porn.jpg"; // 設定路徑
byteFile = wc.DownloadData(path);
string fileName = System.IO.Path.GetFileName(path); // 取得檔案名稱
Response.AppendHeader("content-disposition", "attachment;filename=" + "porn.jpg"); //設定檔名
// HttpContext.Current.Server.UrlEncode(fileName) 解決中文檔名亂碼
Response.ContentType = "application/octet-stream"; // 指定檔案類型
Response.BinaryWrite(byteFile); // 內容轉出作檔案下載
Response.End();
亂碼處理的參考資料:
讀取遠端主機的錄影檔案,並且可以成功播放。
利用方法一的方式發生一種狀況是檔案有成功下載,但無法播放檔案。
利用方法二只能在檔案為本機的檔案時使用,因為是使用了 FileStream
為了可以取得遠端主機的錄影檔案,但又要可以成功播放檔案,
最後參考方法二的Context.Response.OutputStream方式才解決此問題。
差異點如下:
Context.Response.BinaryWrite(myStream.ToArray())
我現在是改為使用
Context.Response.OutputStream.Write(ByteBuffer, 0, count)
方法一:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Net;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//base.OnLoad(e);
string url = string.Empty;// Request.QueryString["DownloadUrl"];
if (url == null || url.Length == 0)
{
url = "http://img444.imageshack.us/img444/6228/initialgridsq7.jpg";
}
//Initialize the input stream
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
int bufferSize = 1;
//Initialize the output stream
Response.Clear();
Response.AppendHeader("Content-Disposition:", "attachment; filename=download.jpg");
Response.AppendHeader("Content-Length", resp.ContentLength.ToString());
Response.ContentType = "application/download";
//Populate the output stream
byte[] ByteBuffer = new byte[bufferSize + 1];
MemoryStream ms = new MemoryStream(ByteBuffer, true);
Stream rs = req.GetResponse().GetResponseStream();
byte[] bytes = new byte[bufferSize + 1];
while (rs.Read(ByteBuffer, 0, ByteBuffer.Length) > 0)
{
Response.BinaryWrite(ms.ToArray());
Response.Flush();
}
//Cleanup
Response.End();
ms.Close();
ms.Dispose();
rs.Dispose();
ByteBuffer = null;
}
}
參考資料:http://www.dotnetwatch.com/Programmatically-Download-File-from-Remote-Locatio451_AR.aspx
方法二:
private string _vsk_path_root = "";
private string _vsk_path_files = "/contents/test/"; // directory path where mp4 videos reside
//private bool _vsk_conf_limit_bandwidth = true;
private bool _vsk_conf_allow_file_cache = false;
// bandwidth settings
//private int _vsk_bw_packet_size = 90; //set how many kilobytes will be sent per time interval
//private float _vsk_bw_packet_internal = 0.3F; //set the time interval in which data packets will be sent in seconds.
//private bool _vsk_conf_allow_dynamic_bandwith = true; //set to TRUE to control bandwidth externally via http.
// incomming get variables
//private string _vsk_get_bandwidth="bw";
// domain restriction
private bool _islimitdomain = false; // set to TRUE to limit access to the player
private static string[] _allowed_domains = new string[] { "www.remix-video.com", "www.mediasoftpro.com" };
private bool _isrestrictdomain = false; // set to TRUE to restrict access to the player.
private static string[] _restricted_domains = new string[] { "www.sampledomain.com", "www.sampledomain2.com", "www.sampledomain3.com" };
// points to server root
public string VSK_PATH_ROOT
{
set { _vsk_path_root = value; }
get { return _vsk_path_root; }
}
public string VSK_PATH_FILES
{
set { _vsk_path_files = value; }
get { return _vsk_path_files; }
}
////set to TRUE to use bandwidth limiting.
//public bool VSK_CONF_LIMIT_BANDWIDTH
//{
// set { _vsk_conf_limit_bandwidth = value;}
// get { return _vsk_conf_limit_bandwidth;}
//}
//set to FALSE to prohibit caching of video files.
public bool VSK_CONF_ALLOW_FILE_CACHE
{
set { _vsk_conf_allow_file_cache = value; }
get { return _vsk_conf_allow_file_cache; }
}
////set how many kilobytes will be sent per time interval
//public int VSK_BW_PACKET_SIZE
//{
// set { _vsk_bw_packet_size = value;}
// get { return _vsk_bw_packet_size;}
//}
//// set the time interval in which data packets will be sent in seconds.
//public float VSK_BW_PACKET_INTERVAL
//{
// set { _vsk_bw_packet_internal = value;}
// get { return _vsk_bw_packet_internal;}
//}
////set to TRUE to control bandwidth externally via http.
//public bool VSK_CONF_ALLOW_DYNAMIC_BANDWIDTH
//{
// set { _vsk_conf_allow_dynamic_bandwith = value;}
// get { return _vsk_conf_allow_dynamic_bandwith;}
//}
//public string VSK_GET_BANDWIDTH
//{
// set { _vsk_get_bandwidth =value;}
// get { return _vsk_get_bandwidth;}
//}
public void ProcessRequest(HttpContext context)
{
try
{
int i = 0;
bool flag = false;
// limit access of player to certain domains
if (_islimitdomain)
{
if (context.Request.UrlReferrer == null)
{
context.Response.Write("<b>ERROR:</b> Unknown Referrer.");
return;
}
StringCollection _list = new StringCollection();
_list.AddRange(_allowed_domains);
for (i = 0; i <= _list.Count - 1; i++)
{
if (_list[i].Contains(context.Request.UrlReferrer.Host))
flag = true; // referrer host matched with list of allowed domains
}
if (!flag) // referrer host not matched
{
context.Response.Write("<b>ERROR:</b> Access Denied.");
return;
}
}
// restrict access of some domains to player
if (_isrestrictdomain)
{
if (context.Request.UrlReferrer == null)
{
context.Response.Write("<b>ERROR:</b> Unknown Referrer.");
return;
}
flag = false;
StringCollection _list = new StringCollection();
_list.AddRange(_restricted_domains);
for (i = 0; i <= _list.Count - 1; i++)
{
if (_list[i].Contains(context.Request.UrlReferrer.Host))
flag = true; // referrer host matched with list of restricted domains
}
if (flag) // referrer host matched with restricted domains
{
context.Response.Write("<b>ERROR:</b> Access Restricted.");
return;
}
}
// Security Check
if (context.Request.Params["token"] == null)
{
//if (context.Request.Params["token"] != "kxdffxki")
//{
context.Response.Write("<b>ERROR:</b> Access Denied.");
return;
//}
}
int position;
int length;
// Check start parameter if present
//string filename = Path.GetFileName(context.Request.FilePath);
string filename = context.Request.Params["file"];
string seekpos = context.Request.Params["start"];
string user = context.Request.Params["token"]; // point token with author of video
// assemble file path
string rootpath = context.Server.MapPath(context.Request.ApplicationPath);
// string file = rootpath + "" + this.VSK_PATH_FILES + "" + user + "/FLV/" + filename;
string file = rootpath + "" + this.VSK_PATH_FILES + "" + filename;
if (!File.Exists(file))
{
context.Response.Write("<b>ERROR:</b> vsk-mp4 could not find (" + filename + ") please check your settings.");
return;
}
if (File.Exists(file) && filename.EndsWith(".mp4") && filename.Length > 2)
{
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
if (string.IsNullOrEmpty(seekpos))
{
position = 0;
length = Convert.ToInt32(fs.Length);
}
else
{
position = Convert.ToInt32(seekpos);
//length = Convert.ToInt32(fs.Length - position) + _header.Length;
length = Convert.ToInt32(fs.Length - position);
}
// Add HTTP header stuff: cache, content type and length
if (!this.VSK_CONF_ALLOW_FILE_CACHE)
{
// session_cache_limiter("nocache");
// header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
// header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
// header("Pragma: no-cache");
}
else
{
//context.Response.Cache.SetCacheability(HttpCacheability.Public);
//context.Response.Cache.SetLastModified(DateTime.Now);
}
//context.Response.AppendHeader("Content-Type", "video/x-flv");
context.Response.AppendHeader("Content-Type", "video/mp4");
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + "");
context.Response.AppendHeader("Content-Length", length.ToString());
// Read buffer and write stream to the response stream
const int buffersize = 16384;
byte[] buffer = new byte[buffersize];
int count = fs.Read(buffer, 0, buffersize);
while (count > 0)
{
if (context.Response.IsClientConnected)
{
context.Response.OutputStream.Write(buffer, 0, count);
context.Response.Flush();
count = fs.Read(buffer, 0, buffersize);
}
else
{
count = -1;
}
}
fs.Close();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
參考資料:http://www.mediasoftpro.com/articles/asp.net-progressive-mp4-streaming.html
利用方法一的方式發生一種狀況是檔案有成功下載,但無法播放檔案。
利用方法二只能在檔案為本機的檔案時使用,因為是使用了 FileStream
為了可以取得遠端主機的錄影檔案,但又要可以成功播放檔案,
最後參考方法二的Context.Response.OutputStream方式才解決此問題。
差異點如下:
Context.Response.BinaryWrite(myStream.ToArray())
我現在是改為使用
Context.Response.OutputStream.Write(ByteBuffer, 0, count)
方法一:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Net;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//base.OnLoad(e);
string url = string.Empty;// Request.QueryString["DownloadUrl"];
if (url == null || url.Length == 0)
{
url = "http://img444.imageshack.us/img444/6228/initialgridsq7.jpg";
}
//Initialize the input stream
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
int bufferSize = 1;
//Initialize the output stream
Response.Clear();
Response.AppendHeader("Content-Disposition:", "attachment; filename=download.jpg");
Response.AppendHeader("Content-Length", resp.ContentLength.ToString());
Response.ContentType = "application/download";
//Populate the output stream
byte[] ByteBuffer = new byte[bufferSize + 1];
MemoryStream ms = new MemoryStream(ByteBuffer, true);
Stream rs = req.GetResponse().GetResponseStream();
byte[] bytes = new byte[bufferSize + 1];
while (rs.Read(ByteBuffer, 0, ByteBuffer.Length) > 0)
{
Response.BinaryWrite(ms.ToArray());
Response.Flush();
}
//Cleanup
Response.End();
ms.Close();
ms.Dispose();
rs.Dispose();
ByteBuffer = null;
}
}
參考資料:http://www.dotnetwatch.com/Programmatically-Download-File-from-Remote-Locatio451_AR.aspx
方法二:
private string _vsk_path_root = "";
private string _vsk_path_files = "/contents/test/"; // directory path where mp4 videos reside
//private bool _vsk_conf_limit_bandwidth = true;
private bool _vsk_conf_allow_file_cache = false;
// bandwidth settings
//private int _vsk_bw_packet_size = 90; //set how many kilobytes will be sent per time interval
//private float _vsk_bw_packet_internal = 0.3F; //set the time interval in which data packets will be sent in seconds.
//private bool _vsk_conf_allow_dynamic_bandwith = true; //set to TRUE to control bandwidth externally via http.
// incomming get variables
//private string _vsk_get_bandwidth="bw";
// domain restriction
private bool _islimitdomain = false; // set to TRUE to limit access to the player
private static string[] _allowed_domains = new string[] { "www.remix-video.com", "www.mediasoftpro.com" };
private bool _isrestrictdomain = false; // set to TRUE to restrict access to the player.
private static string[] _restricted_domains = new string[] { "www.sampledomain.com", "www.sampledomain2.com", "www.sampledomain3.com" };
// points to server root
public string VSK_PATH_ROOT
{
set { _vsk_path_root = value; }
get { return _vsk_path_root; }
}
public string VSK_PATH_FILES
{
set { _vsk_path_files = value; }
get { return _vsk_path_files; }
}
////set to TRUE to use bandwidth limiting.
//public bool VSK_CONF_LIMIT_BANDWIDTH
//{
// set { _vsk_conf_limit_bandwidth = value;}
// get { return _vsk_conf_limit_bandwidth;}
//}
//set to FALSE to prohibit caching of video files.
public bool VSK_CONF_ALLOW_FILE_CACHE
{
set { _vsk_conf_allow_file_cache = value; }
get { return _vsk_conf_allow_file_cache; }
}
////set how many kilobytes will be sent per time interval
//public int VSK_BW_PACKET_SIZE
//{
// set { _vsk_bw_packet_size = value;}
// get { return _vsk_bw_packet_size;}
//}
//// set the time interval in which data packets will be sent in seconds.
//public float VSK_BW_PACKET_INTERVAL
//{
// set { _vsk_bw_packet_internal = value;}
// get { return _vsk_bw_packet_internal;}
//}
////set to TRUE to control bandwidth externally via http.
//public bool VSK_CONF_ALLOW_DYNAMIC_BANDWIDTH
//{
// set { _vsk_conf_allow_dynamic_bandwith = value;}
// get { return _vsk_conf_allow_dynamic_bandwith;}
//}
//public string VSK_GET_BANDWIDTH
//{
// set { _vsk_get_bandwidth =value;}
// get { return _vsk_get_bandwidth;}
//}
public void ProcessRequest(HttpContext context)
{
try
{
int i = 0;
bool flag = false;
// limit access of player to certain domains
if (_islimitdomain)
{
if (context.Request.UrlReferrer == null)
{
context.Response.Write("<b>ERROR:</b> Unknown Referrer.");
return;
}
StringCollection _list = new StringCollection();
_list.AddRange(_allowed_domains);
for (i = 0; i <= _list.Count - 1; i++)
{
if (_list[i].Contains(context.Request.UrlReferrer.Host))
flag = true; // referrer host matched with list of allowed domains
}
if (!flag) // referrer host not matched
{
context.Response.Write("<b>ERROR:</b> Access Denied.");
return;
}
}
// restrict access of some domains to player
if (_isrestrictdomain)
{
if (context.Request.UrlReferrer == null)
{
context.Response.Write("<b>ERROR:</b> Unknown Referrer.");
return;
}
flag = false;
StringCollection _list = new StringCollection();
_list.AddRange(_restricted_domains);
for (i = 0; i <= _list.Count - 1; i++)
{
if (_list[i].Contains(context.Request.UrlReferrer.Host))
flag = true; // referrer host matched with list of restricted domains
}
if (flag) // referrer host matched with restricted domains
{
context.Response.Write("<b>ERROR:</b> Access Restricted.");
return;
}
}
// Security Check
if (context.Request.Params["token"] == null)
{
//if (context.Request.Params["token"] != "kxdffxki")
//{
context.Response.Write("<b>ERROR:</b> Access Denied.");
return;
//}
}
int position;
int length;
// Check start parameter if present
//string filename = Path.GetFileName(context.Request.FilePath);
string filename = context.Request.Params["file"];
string seekpos = context.Request.Params["start"];
string user = context.Request.Params["token"]; // point token with author of video
// assemble file path
string rootpath = context.Server.MapPath(context.Request.ApplicationPath);
// string file = rootpath + "" + this.VSK_PATH_FILES + "" + user + "/FLV/" + filename;
string file = rootpath + "" + this.VSK_PATH_FILES + "" + filename;
if (!File.Exists(file))
{
context.Response.Write("<b>ERROR:</b> vsk-mp4 could not find (" + filename + ") please check your settings.");
return;
}
if (File.Exists(file) && filename.EndsWith(".mp4") && filename.Length > 2)
{
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
if (string.IsNullOrEmpty(seekpos))
{
position = 0;
length = Convert.ToInt32(fs.Length);
}
else
{
position = Convert.ToInt32(seekpos);
//length = Convert.ToInt32(fs.Length - position) + _header.Length;
length = Convert.ToInt32(fs.Length - position);
}
// Add HTTP header stuff: cache, content type and length
if (!this.VSK_CONF_ALLOW_FILE_CACHE)
{
// session_cache_limiter("nocache");
// header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
// header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
// header("Pragma: no-cache");
}
else
{
//context.Response.Cache.SetCacheability(HttpCacheability.Public);
//context.Response.Cache.SetLastModified(DateTime.Now);
}
//context.Response.AppendHeader("Content-Type", "video/x-flv");
context.Response.AppendHeader("Content-Type", "video/mp4");
context.Response.AddHeader("Content-Disposition", "attachment; filename=" + filename + "");
context.Response.AppendHeader("Content-Length", length.ToString());
// Read buffer and write stream to the response stream
const int buffersize = 16384;
byte[] buffer = new byte[buffersize];
int count = fs.Read(buffer, 0, buffersize);
while (count > 0)
{
if (context.Response.IsClientConnected)
{
context.Response.OutputStream.Write(buffer, 0, count);
context.Response.Flush();
count = fs.Read(buffer, 0, buffersize);
}
else
{
count = -1;
}
}
fs.Close();
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
參考資料:http://www.mediasoftpro.com/articles/asp.net-progressive-mp4-streaming.html