c#上传文件(二)使用文件流保存文件

时间:2021-02-07 21:14:00

1.html代码:

<asp:FileUpload runat="server" ID="UpLoadFile"/>
<asp:Button runat="server" ID="btnUpLoad" OnClick="btnUpLoad_Click" Text="上传"/>

html代码

2.后台代码:

public partial class UpLoadFilesByStream : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
/// <summary>
/// 上传
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpLoad_Click(object sender, EventArgs e)
{
//对于文件的格式和大小的判断,在上一篇已经涉及,这里省略。
if (this.UpLoadFile.HasFile)
{
//HttpPostedFile类提供对客户端已上载的单独文件的访问
HttpPostedFile hpf = this.UpLoadFile.PostedFile;
//HttpPostedFile hpf = Request.Files[0];
//文件名
string fileName = Path.GetFileName(hpf.FileName);
//文件大小,单位字节
int fileContentLength = hpf.ContentLength;
//上传路径
string filePath = Server.MapPath("/Files/");
//二进制数组
byte[] fileBytes = null;
fileBytes = new byte[fileContentLength];
//创建Stream对象,并指向上传文件
Stream fileStream = hpf.InputStream;
//从当前流中读取字节,读入字节数组中
fileStream.Read(fileBytes, , fileContentLength);
//全路径(路劲+文件名)
string fullPath = filePath + fileName;
//保存到磁盘
SaveToDisk(fileBytes, fullPath);
}
} /// <summary>
/// 保存到磁盘
/// </summary>
/// <param name="bytes">字节数组</param>
/// <param name="saveFullPath">全路径</param>
/// <returns></returns>
public void SaveToDisk(byte[] bytes, string saveFullPath)
{
var fullPath = Path.GetDirectoryName(saveFullPath);
//如果没有此文件夹,则新建
if (!Directory.Exists(fullPath))
{
Directory.CreateDirectory(fullPath);
}
//创建文件,返回一个 FileStream,它提供对 path 中指定的文件的读/写访问。
using (FileStream stream = File.Create(saveFullPath))
{
//将字节数组写入流
stream.Write(bytes, , bytes.Length);
stream.Close();
}
}
}

.cs代码

测试通过!