简单的说,客户机上传文件到另一台计算机(非服务器)c# .net 怎么实现 5
1个回答
展开全部
IIS建立发布,然后客户端同时可以上传下载就好了,中间用服务器做缓存。文件先上传到服务器,再在别的客户端上下载到本地,销毁服务器数据。如果你希望看到上传进度,那就让他显示服务器文件大小就好了。
protected void BtnUpload_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string upPath = "/up/"; //上传文件路径
int upLength = 5; //上传文件大小
string upFileType = "|image/bmp|image/x-png|image/pjpeg|image/gif|image/png|image/jpeg|";
string fileContentType = FileUpload1.PostedFile.ContentType; //文件类型
if (upFileType.IndexOf(fileContentType.ToLower()) > 0)
{
string name = FileUpload1.PostedFile.FileName; // 客户端文件路径
FileInfo file = new FileInfo(name);
string fileName = DateTime.Now.ToString("yyyyMMddhhmmssfff") + file.Extension; // 文件名称,当前时间(yyyyMMddhhmmssfff)
string webFilePath = Server.MapPath(upPath) + fileName; // 服务器端文件路径
string FilePath = upPath + fileName; //页面中使用的路径
if (!File.Exists(webFilePath))
{
if ((FileUpload1.FileBytes.Length / (1024 * 1024)) > upLength)
{
ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('大小超出 " + upLength + " M的限制,请处理后再上传!');", true);
return;
}
try
{
FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件
ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件上传成功');", true);
}
catch (Exception ex)
{
ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件上传失败" + ex.Message + "');", true);
}
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件已经存在,请重命名后上传');", true);
}
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提示:文件类型不符" + fileContentType + "');", true);
}
}
}
//下载按钮
protected void BtnDownload_Click(object sender, EventArgs e)
{
string fileName = "aaa.jpg";//客户端保存的文件名
string filePath = Server.MapPath(@"~\up\20141103045852132.jpg");//路径
//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
在HTML里就可以直接使用了:
<div>
<asp:FileUpload ID="FileUpload1" runat="server" Width="220px" />
<asp:Button ID="btn1" runat="server" CssClass="buttonClass" OnClick="BtnUpload_Click" Text="上传" />
<asp:Button ID="btn2" runat="server" onclick="BtnDownload_Click" Text="下载" />
</div>
前提条件两个客户端要能同时访问IIS服务器
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询