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

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

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-10-08 14: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>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月16日
  • 已采纳回答 10月8日
  • 创建了问题 10月8日

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?