文件的上傳下載是我們在實際項目開發過程中經常需要用到的技術
第一部分
首先我們來說一下如何解決中的文件上傳大小限制的問題
IServiceProvidERProvider=(IServiceProvider)HttpContext
HttpWorkerRequestwr=(HttpWorkerRequest)provider
byte[]bs=wr
if(!wr
{
intn=
byte[]bs
while(wr
{
}
}
這樣就可以解決了大文件的上傳問題了
第二部分
下面我們來介紹如何以文件形式將客戶端的一個文件上傳到服務器並返回上傳文件的一些基本信息
首先我們定義一個類
public class FileUpLoad
{
public FileUpLoad()
{}
/**////
/// 上傳文件名稱
///
public string FileName
{
get
{
return fileName;
}
set
{
fileName = value;
}
}
private string fileName;
/**////
/// 上傳文件路徑
///
public string FilePath
{
get
{
return filepath;
}
set
{
filepath = value;
}
}
private string filepath;
/**////
/// 文件擴展名
///
public string FileExtension
{
get
{
return fileExtension;
}
set
{
fileExtension = value;
}
}
private string fileExtension;
}
另外我們還可以在配置文件中限制上傳文件的格式(App
<?XML version=
<Application>
<FileUpLoad>
<Format>
</FileUpLoad>
</Application>
這樣我們就可以開始寫我們的上傳文件的方法了
public FileUpLoad UpLoadFile(HtmlInputFile InputFile
{
FileUpLoad fp = new FileUpLoad();
string fileName
string saveName;
//
//建立上傳對象
//
HttpPostedFile postedFile = InputFile
fileName = System
fileExtension = System
//
//根據類型確定文件格式
//
AppConfig app = new AppConfig();
string format = app
//
//如果格式都不符合則返回
//
if(format
{
throw new ApplicationException(
}
//
//根據日期和隨機數生成隨機的文件名
//
if(myfileName != string
{
fileName = myfileName;
}
if(isRandom)
{
Random objRand = new Random();
System
//生成隨機文件名
saveName = date
fileName = saveName + fileExtension;
}
string phyPath = HttpContext
//判斷路徑是否存在
DirectoryInfo upDir = new DirectoryInfo(phyPath);
if(!upDir
{
upDir
}
//
//保存文件
//
try
{
postedFile
fp
fp
fp
}
catch
{
throw new ApplicationException(
}
//返回上傳文件的信息
return fp;
}
然後我們在上傳文件的時候就可以調用這個方法了
第三部分
這裡我們主要說一下如何以二進制的形式上傳文件以及下載
public byte[] UpLoadFile(HtmlInputFile f_IFile)
{
//獲取由客戶端指定的上傳文件的訪問
HttpPostedFile upFile=f_IFile
//得到上傳文件的長度
int upFileLength=upFile
//得到上傳文件的客戶端MIME類型
string contentType = upFile
byte[] FileArray=new Byte[upFileLength];
Stream fileStream=upFile
fileStream
return FileArray;
}
這個方法返回的就是上傳的文件的二進制字節流
首先
<add verb=
這表示我打開openfile
using System;
using System
using System
using System
using Ruixin
using RXSuite
using RXSuite
using RuixinOA
namespace RuixinOA
{
/**////
/// NetUFile 的摘要說明
///
public class OpenFile : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//從數據庫中取出要下載的文件信息
RuixinOA
EntityData data = os
if(data != null && data
{
DataRow dr = (DataRow)data
context
context
context
context
context
context
context
}
}
public bool IsReusable
{
get { return true;}
}
}
}
執行上面的方法後
第四部分
這一部分主要說如何上傳一個Internet上的資源到服務器
首先需要引用 System
HttpWebRequest hwq = (HttpWebRequest)WebRequest
HttpWebResponse hwr = (HttpWebResponse)hwq
byte[] bytes = new byte[hwr
Stream stream = hwr
stream
//HttpContext
HttpWebRequest 可以從Internet上讀取文件
第五部分
今天簡單的介紹了幾種文件上傳與下載的方法
From:http://tw.wingwit.com/Article/program/net/201311/12325.html