上传与下载
听说好多面试的时候喜欢出上传与下载的题目,这里我就写winform版本和.net版本都写一个,写核心代码,细节就不写了,仅供参考
Form
//上传
private void btnUpload_Click(object sender, EventArgs e)
{
openFile.ShowDialog();
using (FileStream fileStream = new FileStream(openFile.FileName, FileMode.Open))
{
byte[] buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
using (FileStream file = new FileStream(@"../../images/11.jpg", FileMode.CreateNew))
{
file.Write(buffer, 0, buffer.Length);
}
};
MessageBox.Show("成功");
}
//下载
private void btnDowload_Click(object sender, EventArgs e)
{
string path = @"../../images/11.jpg";
using (FileStream filestream = new FileStream(path, FileMode.Open))
{
byte[] buffer = new byte[filestream.Length];
filestream.Read(buffer, 0, buffer.Length);
using (FileStream file = new FileStream(@"C://1.jpg", FileMode.CreateNew))
{
file.Write(buffer, 0, buffer.Length);
}
};
MessageBox.Show("成功");
}
asp.net
前台:
<form name="form1" method="post" action="index.aspx"
enctype="multipart/form-data" runat="server">
<input type="file" id="txtFile" name="picfile" />
<input type="submit" value="上传"/>
<asp:Button ID="btnDowloand" runat="server" Text="下载"
onclick="btnDowloand_Click" />
</form>
cs代码:
namespace 上传与下载
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) {
string directoryPath = Server.MapPath(@"~/images");
string path = directoryPath + "\\13.jpg";
Request.Files[0].SaveAs(path);
Response.Write("上传成功");
}
}
//下载
protected void btnDowloand_Click(object sender, EventArgs e)
{
string path = Server.MapPath(@"~/images/13.jpg");
string fileName=Path.GetFileName(path);
Response.AddHeader("content-Disposition", string.Format("attachment;filename=\"{0}\"",path));
Response.WriteFile(path);
Response.End();
}
}
}
asp.net 一般处理器
<form id="form1" runat="server" method="post" enctype="multipart/form-data" action="upLoadHandler.ashx">
<div>
上传: <input id="FileUpload" type="file" name="upload" />
<input id="SubmitUpload" type="submit" value="上传" />
<a href="DownLoadHandler.ashx">下载</a>
</div>
</form>
upLoadHandler.ashx:
<%@ WebHandler Language="C#" Class="upLoadHandler" %>
using System;
using System.Web;
using System.IO;
using System.Drawing;
public class upLoadHandler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
HttpPostedFile file= context.Request.Files[0];
string fileName = Path.GetFileName(file.FileName);
var filepostfix = fileName.Split('.')[1];
if (filepostfix.Equals("jpg") || filepostfix.Equals("png"))
{ //直接上传图片
file.SaveAs(context.Server.MapPath(@"~\upLaodFile\" +Guid.NewGuid().ToString()+ fileName));
//上传缩略图
//CreateImageOutput(80, 80, file);
context.Response.Write("上传成功");
}
else
{
context.Response.Write("只能上传图片格式");
}
}
public bool IsReusable {
get {
return false;
}
}
}