日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件上传下载小结一(转载)

發(fā)布時間:2025/4/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件上传下载小结一(转载) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一.?? 在Form中一定要將encType設(shè)為"multipart/form-data":
<form id="WebForm3" method="post" encType="multipart/form-data" runat="server" >

二.?? 判斷是否有文件上傳了:
當(dāng)用戶沒有選擇任何要上傳的文件,即HtmlInputFile控件中的文本框?yàn)榭諘r點(diǎn)擊了上傳按鈕后,在服務(wù)端得到的File1.PostedFile對象不是null,而是有對象的,所以不能用(File1.PostedFile == null)來判斷是否上傳了文件,用(File1.PostedFile.ContentLength != 0)來判斷比較好

三.?? 判斷上傳文件MIMIE類型:
文件上傳后可以用File1.PostedFile.ContentType來讀取這個文件的MIMIE類型,這個MIMIE類型是系統(tǒng)通過上傳文件的后綴名來獲得的。

四.?? 保存上傳的文件:

1.??? 文件可以通過File1.PostedFile.SaveAs(path) //path是服務(wù)器上的物理路徑,來保存文件。

if(File1.PostedFile.ContentLength != 0)

{

??? StringBuilder myStr = new StringBuilder();

??? myStr.Append("文件名稱:" + File1.PostedFile.FileName);

??? myStr.Append("<br>");

??? myStr.Append("文件類型:" + File1.PostedFile.ContentType);

??? myStr.Append("<br>");

??? myStr.Append("文件長度:" + File1.PostedFile.ContentLength.ToString());

??? myStr.Append("<br>");

???

??? string path = Server.MapPath("./");?//當(dāng)前路徑

??? string fileName = File1.PostedFile.FileName.Substring(File1.PostedFile.FileName.LastIndexOf('\\')+1);

??? path += fileName;

??? if(File.Exists(path) == true)

??? {

???????Label1.Text = "服務(wù)器上已經(jīng)有了你正在上傳的文件:" + fileName;

???????return;

??? }

??? File1.PostedFile.SaveAs(path);



??? myStr.Append("保存完畢!");

??? myStr.Append("<br>");

??? Label1.Text = myStr.ToString();

}

else

{

??? Label1.Text = "你沒有選擇要上載的文件或者上傳的文件長度為0!";

}


2.??? 文件也可以通過二進(jìn)制的讀取后存放到數(shù)據(jù)庫的二進(jìn)制的字段中:
byte[] fileCont = new byte[File1.PostedFile.ContentLength];
File1.PostedFile.InputStream.Read(fileCont,0, File1.PostedFile.ContentLength);
然后將此字節(jié)數(shù)組fileCont賦給數(shù)據(jù)庫的二進(jìn)制字段的參數(shù),寫到數(shù)據(jù)庫中。



文件下載(轉(zhuǎn)載)

一.?? 服務(wù)端通過Response輸出相應(yīng)的HTTP Response Headers信息,和要下載的文件的數(shù)據(jù)來把文件發(fā)送到客戶端,HTTP Response Headers表現(xiàn)在html文件中是下面的形式:
<meta http-equiv="Content-Type" content="text/htm ">
http-equiv表示是Headers的名稱,content表示這個Headers的值

二.?? 首先,要輸出文件的MIME類型:
Page.Response.AddHeader( "Content-Type", “MIME類型” );?

三.?? 其次,要輸出下載的文件的打開位置和文件名:
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName );
content-disposition 的 HTTP response header 允許指定文檔表示的信息。使用這種 header ,你就可以將文檔指定成單獨(dú)打開(而不是在瀏覽器中打開),還可以根據(jù)用戶的操作來顯示。如果用戶要保存文檔,你還可以為該文檔建議一個文件名。這個建議名稱會出現(xiàn)在 Save As 對話框的“文件名”欄中。
打開位置:
attachment ―― 表示作為附件發(fā)送到客戶端,客戶端將單獨(dú)打開此文件。
inline ―― 表示將在瀏覽器中打開這個文件。
文件名:
filename ―― 表示發(fā)送到客戶端文件的文件名。

四.?? 準(zhǔn)備發(fā)送到客戶端的文件數(shù)據(jù):

1.??? 先將不同類型來源的數(shù)據(jù)轉(zhuǎn)成byte類型的數(shù)組,再通過Response.BinaryWrite方法發(fā)送到客戶端:

1.1.???讀取文件來獲得byte數(shù)組: string FileName;?//生成或獲取要發(fā)送到客戶端的文件名

string filePath = Server.MapPath("./") + FileName;?//假設(shè)文件在當(dāng)前目錄下

if(File.Exists(filePath) == false)

{

??? //服務(wù)器上沒有這個文件

??? return;

}

FileStream myFile = File.OpenRead(filePath);?//讀取文件進(jìn)入FileStream

byte[] fileCont = new byte[myFile.Length];

myFile.Read(fileCont,0,(int)myFile.Length);? //將文件流中的內(nèi)容轉(zhuǎn)成byte數(shù)組


1.2.???在數(shù)據(jù)庫的二進(jìn)制字段中讀取: //從url獲取圖片的id

string ImageId = Request.QueryString["img"];

//構(gòu)建查詢語句

string sqlText = "SELECT img_data, img_contenttype FROM Image WHERE img_pk = " + ImageId;

SqlConnection connection = new SqlConnection( ConfigurationSettings.AppSettings["DSN"].ToString() );

SqlCommand command = new SqlCommand( sqlText, connection);

connection.Open();

SqlDataReader dr = command.ExecuteReader();

if ( dr.Read())

{

??? byte[] fileCont = (byte[]) dr["img_data"] ;

}

connection.Close();


1.3.???從internet上讀取文件: HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create( "http://www.via.com/aa.xls ");

HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();

Stream readStream = myWebResponse.GetResponseStream();

??????????

byte[] bytes = new byte[readStream.Length];

bytes = readStream.Read(bytes,0,readStream.Length);


通過上述三種方法獲得的文件內(nèi)容的byte數(shù)組就可以用來輸出了:
Page.Response.BinaryWrite(fileCont);

Page.Response.End();



2.??? 直接讀取文件輸出: string FileName;?//生成或獲取要發(fā)送到客戶端的文件名

string filePath = Server.MapPath("./") + FileName;?//假設(shè)文件在當(dāng)前目錄下

if(File.Exists(filePath) == false)

{

??? //服務(wù)器上沒有這個文件

??? return;

}

Page.Response.Clear();

Page.Response.AddHeader( "Content-Type", "image/gif" );?//根據(jù)MIME的不同設(shè)置

Page.Response.AddHeader("Content-Disposition", "inline;filename=" + filePath);

Page.Response.WriteFile(filePath);

Page.Response.End();



內(nèi)容結(jié)束//

轉(zhuǎn)載于:https://www.cnblogs.com/microchuan/archive/2006/04/18/377770.html

總結(jié)

以上是生活随笔為你收集整理的文件上传下载小结一(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区精品视频在线观看 | 亚洲国产视频一区二区三区 | 爱情岛亚洲品质自拍极速福利网站 | 欧美男优 | 日韩av成人网 | 国产成人无码精品久在线观看 | √天堂 | 3344成人| 欧美极品少妇无套实战 | 欧美综合视频在线观看 | 欧美日韩高清一区二区 国产亚洲免费看 | 九色在线视频 | 国产老妇伦国产熟女老妇视频 | 国产1区| 毛色毛片 | 韩国三级视频 | xxsm.com| 国产色呦呦| 欧美 日韩 综合 | 亚洲高清自拍 | 人妻无码一区二区三区免费 | 青青草久 | 农村偷人一级超爽毛片 | 国产精品毛片久久 | 极品美女无套呻吟啪啪 | 亚洲性综合网 | 午夜视频在线观看视频 | 黄色大片免费网站 | 老牛影视少妇在线观看 | 五月天黄色小说 | 色就是色综合 | 亚洲av无码精品色午夜 | 亚洲天堂一区二区在线 | 久热这里只有精品在线 | 欧美精品一区二区三区久久久竹菊 | 超碰caopeng | 男同志毛片特黄毛片 | 国产人妻大战黑人20p | 手机看片日韩在线 | 在线视频综合网 | 操亚洲女人 | 亚洲一二三在线 | 亚洲 小说区 图片区 | xxxx日本高清 | 免费一级网站 | av成人在线免费观看 | 日韩亚洲欧美在线观看 | 国产亚洲精品美女久久久 | 性猛交富婆╳xxx乱大交麻豆 | 色阁av| 亚洲欧美色视频 | 日韩欧美中文字幕精品 | 欧美日韩激情网 | 成人亚洲黄色 | 亚洲日本影院 | 久久久在线观看 | 老妇高潮潮喷到猛进猛出 | 欧美67194| 亚洲激情在线 | 日韩av手机在线 | 毛片天堂 | 亚洲码欧美码一区二区三区 | 50度灰在线| 干骚视频 | 亚洲拍拍| 亚洲图片欧美视频 | 色av综合网 | 日韩专区在线播放 | aaa久久| 九色视频自拍 | 久久久久久久久久久久久久久久久久 | 麻豆一区二区99久久久久 | 五月天综合网 | 亚洲婷婷小说 | 国产不卡精品视频 | 卡一卡二视频 | 亚洲乱码中文字幕久久孕妇黑人 | 午夜大片| 男人天堂av电影 | 免费国产黄色网址 | 三上悠亚ssⅰn939无码播放 | 久久精品视频久久 | 日本亚洲最大的色成网站www | 国产福利精品在线 | 国产精品无码免费专区午夜 | 日韩一区二区av | 久久综合资源 | 欧美日韩一区二区三区四区 | 噜噜噜久久久 | 丝袜一级片| 女人下面无遮挡 | 秋霞国产午夜精品免费视频 | 69日影院 | 欧美视频免费在线观看 | 青青青国产 | 中文字幕a级片 | 99国产精品99 | 超碰极品| 日韩有码一区 |