上传与下载

上传与下载

听说好多面试的时候喜欢出上传与下载的题目,这里我就写winform版本和.net版本都写一个,写核心代码,细节就不写了,仅供参考

Form

图1

 //上传
        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

图2


前台:
  <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;
        }
    }

}

转载请注明: Zhou•Yong 上传与下载

上一篇
SSM 复习总结 SSM 复习总结
Springspring 项目中对象容器,帮我们管理项目中的所有对象Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理AOP 编程的支持Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、
2019-01-24
下一篇
面向接口编程框架 面向接口编程框架
面向接口编程框架框架:MVC+EF模型+面向接口式三层架构+工厂模式,UnitWork模式,使用了t4模板,框架用于分享 github代码下载:https://github.com/zy20081/practice.git 前台代码展示
2019-01-17
目录