_夜归人 2021-10-08 05:03 采纳率: 62.5%
浏览 73
已结题

c#做一个http服务端实现远程文件上传下载功能

服务端实现对远程共享文件夹下文件的上传下载删除等功能,怎么写合理一点啊,我现在只监听了一个url(10.0.15.105:8080),然后根据客户端传值类型判断是上传还是下载,但显然不对😂,怎么把每个功能单独写一个接口啊,没写过服务端,懵逼

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-10-08 06:34
    关注

    搭建好web服务器,用System.IO下的类读,写,删除文件。接口可以一个,也可以分开,上传归上传,下载归下载的。

    同一个接口可以传递不同的参数来判断进行什么操作。下面为一个简单示例,有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.IO" %>
    <script runat="server">
        string  fileHtml="";
        protected void Page_Load(Object sender, EventArgs e)
        {
            var savePath = Server.MapPath("/upload/");//文件保存路径,网站根目录upload文件夹下
            var op = Request.QueryString["op"];
            if (op == "upload")
            { //上传操作
                var file = Request.Files["file"];
                if (file != null)
                {
                    var ext = Path.GetExtension(file.FileName).Substring(1).ToLower();
                    if (new[] { "jpg", "jpeg", "gif", "png" }.Contains(ext))
                    {
                        var fn = Path.GetFileName(file.FileName);
                        int i = 1;
                        while (File.Exists(savePath + fn))
                        {
                            fn = fn.Replace((i == 1 ? "" : i.ToString()) + ".", "-" + i + ".");
                            i++;
                        }
                        file.SaveAs(savePath + fn);
                        Response.Write("文件保存成功");
                    }
                }
            }
            else if (op == "download")
            {//下载操作 
                var fn = Request.QueryString["fn"];
                if (!string.IsNullOrEmpty(fn) && File.Exists(savePath + fn))
                {
                    Response.AddHeader("content-disposition", "attachment;filename=\"" + fn + "\"");
                    Response.TransmitFile(savePath + fn);
                    Response.End();
                }
            }
    
    
            //读取文件夹文件显示操作
            fileHtml = String.Join("", Directory.GetFiles(savePath).Select(i => "<div><a href='?op=download&fn=" + Server.UrlDecode(Path.GetFileName(i)) + "'>"+Path.GetFileName(i)+"</a></div>"));
            this.DataBind();
    
        }
    </script>
    <script>
        function check(f) {
            if (!/(jpe?g|png|gif)$/.test(f.file.value)) { alert('只允许上传图片文件!'); return false;}
        }
    </script>
    <form method="post" action="?op=upload" enctype="multipart/form-data" onsubmit="return check(this)">
        选择文件:<input type="file" name="file" accept="image/*" /><input type="submit" value="上传文件" />
    </form>
    <div>点击下载文件
        <%#fileHtml %>
    </div>
    
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    _夜归人 2021-10-08 06:39

    如果分开写在一个项目里面怎么弄呢?

    回复
    CSDN专家-showbo 回复 _夜归人 2021-10-08 06:41

    上面的if语句代码拆开成2个页面就行

    回复
    CSDN专家-showbo 回复 _夜归人 2021-10-08 06:42

    upload.aspx

    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.IO" %>
    <script runat="server">
        protected void Page_Load(Object sender, EventArgs e)
        {
            var savePath = Server.MapPath("/upload/");//文件保存路径,网站根目录upload文件夹下
            var file = Request.Files["file"];
            if (file != null)
            {
                var ext = Path.GetExtension(file.FileName).Substring(1).ToLower();
                if (new[] { "jpg", "jpeg", "gif", "png" }.Contains(ext))
                {
                    var fn = Path.GetFileName(file.FileName);
                    int i = 1;
                    while (File.Exists(savePath + fn))
                    {
                        fn = fn.Replace((i == 1 ? "" : i.ToString()) + ".", "-" + i + ".");
                        i++;
                    }
                    file.SaveAs(savePath + fn);
                    Response.Write("文件保存成功");
                }
                else Response.Write("只能上传jpg,jpeg,gif,png文件");
            }
            else Response.Write("文件不能为空!");
        }
    </script>
    
    

    回复
    展开全部11条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月8日
  • 创建了问题 10月8日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部