zoukankan      html  css  js  c++  java
  • C# 之 FTPserver中文件上传与下载(二)

            通过上一篇博客《C# 之 FTPserver中文件上传与下载(一)》,我们已经创建好了一个FTPserver,而且该server须要username和password的验证。今天我们来实现文件的上传。


    首先,我们前台须要一个FileUpload控件和一个Button控件

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:FileUpload ID="fuImage" runat="server" Width="400px" />
        <asp:Button runat="server" ID="btnUpLoad" Text="上传" CssClass="nButton" OnClick="btnUpLoad_Click" />
        </div>
        </form>
    </body>
    </html>


    然后我们開始编写后台的上传代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnUpLoad_Click(object sender, EventArgs e)
        {
            string strFtpPath = "FTP://192.168.1.100:21";   //ftp地址
            string strUserName = "hehe";    //用户名
            string strPassword = "123456";  //密码  
            Boolean flag = false;
    
            string strFullName = "";
            if (fuImage.PostedFile.FileName != "")
            {
                strFullName = fuImage.PostedFile.FileName;  //所选择文件的路径
            }
            else
            {
                Response.Write("<script>alert('请选择要上传的文件!');</script>");
            }
    
            //上传文件
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(fuImage.PostedFile.FileName);
            flag=UploadFile(fileInfo, strFtpPath, strUserName, strPassword);
    
            if (flag==true)
            {
                Response.Write("<script>alert('文件上传成功!

    ');</script>"); } else { Response.Write("<script>alert('文件上传失败。');</script>"); } } /// <summary> /// 上传文件 /// </summary> /// <param name="fileinfo">须要上传的文件</param> /// <param name="targetDir">目标路径</param> /// <param name="hostname">ftp地址</param> /// <param name="username">ftp用户名</param> /// <param name="password">ftp密码</param> /// <returns></returns> public static Boolean UploadFile(System.IO.FileInfo fileinfo, string hostname, string username, string password) { string strExtension = System.IO.Path.GetExtension(fileinfo.FullName); string strFileName=""; strFileName = fileinfo.Name; //获取文件的文件名称 string URI = hostname + "/" + strFileName; //获取ftp对象 System.Net.FtpWebRequest ftp = GetRequest(URI, username, password); //设置ftp方法为上传 ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; //制定文件传输的数据类型 ftp.UseBinary = true; ftp.UsePassive = true; //文件大小 ftp.ContentLength = fileinfo.Length; //缓冲大小设置为2kb const int BufferSize = 2048; byte[] content = new byte[BufferSize - 1 + 1]; int dataRead; //打开一个文件流(System.IO.FileStream)去读上传的文件 using (System.IO.FileStream fs = fileinfo.OpenRead()) { try { //把上传的文件写入流 using (System.IO.Stream rs = ftp.GetRequestStream()) { do { //每次读文件流的2KB dataRead = fs.Read(content, 0, BufferSize); rs.Write(content, 0, dataRead); } while (!(dataRead < BufferSize)); rs.Close(); return true; } } catch (Exception ex) { ftp = null; ftp = GetRequest(URI, username, password); ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile;//删除 ftp.GetResponse(); return false; } finally { fs.Close(); } } } /// <summary> /// 得到ftp对象 /// </summary> /// <param name="URI">ftp地址</param> /// <param name="username">ftp用户名</param> /// <param name="password">ftp密码</param> /// <returns>返回ftp对象</returns> private static System.Net.FtpWebRequest GetRequest(string URI, string username, string password) { //依据server信息FtpWebRequest创建类的对象 FtpWebRequest result = (FtpWebRequest)FtpWebRequest.Create(URI); //提供身份验证信息 result.Credentials = new System.Net.NetworkCredential(username, password); //result.Credentials = new System.Net.NetworkCredential(); //设置请求完毕之后是否保持到FTPserver的控制连接,默认值为true result.KeepAlive = false; return result; } }



    最后看看我们执行的效果吧


    点击浏览。选择我们须要上传的文件



    点击上传,上传我们选择的文件


    最后我们看看我们的ftpserver中该文件是否已经上传






            文件上传就这样上传成功了,我这里的上传能够上传我们全部的文件,当然我们也能够前台通过JS来控制我们仅仅能上传什么样的格式,这个就让大家自己去寻找一下答案吧。





  • 相关阅读:
    PHP 使用 Redis
    Redis /etc/redis.conf 常用配置
    Redis 常用操作
    Redis 操作哈希数据
    Redis 操作有序集合数据
    Redis 操作集合数据
    Redis 操作列表数据
    Redis 操作字符串数据
    Redis 安装
    Redis 简介
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7281034.html
Copyright © 2011-2022 走看看