c#做一个http服务端实现远程文件上传下载功能
问题描述:
服务端实现对远程共享文件夹下文件的上传下载删除等功能,怎么写合理一点啊,我现在只监听了一个url(10.0.15.105:8080),然后根据客户端传值类型判断是上传还是下载,但显然不对????,怎么把每个功能单独写一个接口啊,没写过服务端,懵逼
答
搭建好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>
答
你是要做什么?自己用socket实现一个http服务器?.net core了解一下