简单的说,客户机上传文件到另一台计算机(非服务器)c# .net 怎么实现 5

如题,思路,用IIS的虚拟目录。虚拟目录指向要上传文件夹路径。最好给个例子。... 如题,思路,用IIS的虚拟目录。虚拟目录指向要上传文件夹路径。最好给个例子。 展开
 我来答
创作者zUzVB1Sl31
2015-01-22 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

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服务器

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式