qq_27221415 2017-06-06 05:21 采纳率: 0%
浏览 1511

C# 异步下载问题

    public string IPAdress = "xx.xx.xx.xx";
public string ftpUser = "xxx";
public string ftpPassWord = "xxxxxxxx";
public string LocalAdress = "D://";
public string FileName = "xx.txt";

private void Upload()
{

    Uri uri = new Uri("ftp://" + IPAdress + "/" + FileName);     
    //定义FtpWebRequest,并设置相关属性
    FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uri);
    uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;

    uploadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);

    //开始以异步方式打开请求的内容流以便写入
    uploadRequest.BeginGetRequestStream(new AsyncCallback(EndGetStreamCallback), uploadRequest);
}

private void EndGetStreamCallback(IAsyncResult ar)
{
    //用户定义对象,其中包含该操作的相关信息,在这里得到FtpWebRequest
    FtpWebRequest uploadRequest = (FtpWebRequest)ar.AsyncState;

    //结束由BeginGetRequestStream启动的挂起的异步操作
    //必须调用EndGetRequestStream方法来完成异步操作
    //通常EndGetRequestStream由callback所引用的方法调用
    Stream requestStream = uploadRequest.EndGetRequestStream(ar);

    FileStream fileStream = File.Open(@""+LocalAdress + FileName, FileMode.Open);

    byte[] buffer = new byte[2048];
    int bytesRead;

    float size;
    while (true)
    {         
        bytesRead = fileStream.Read(buffer, 0, buffer.Length);
        startbye += bytesRead;
        if (bytesRead == 0)
            break;
        Debug.Log(startbye);
        size = fileStream.Length;

        //本地的文件流数据写到请求流
        requestStream.Write(buffer, 0, bytesRead);
    }

    requestStream.Close();
    fileStream.Close();

    //开始以异步方式向FTP服务器发送请求并从FTP服务器接收响应
    uploadRequest.BeginGetResponse(new AsyncCallback(EndGetResponseCallback), uploadRequest);
}

private void EndGetResponseCallback(IAsyncResult ar)
{
    FtpWebRequest uploadRequest = (FtpWebRequest)ar.AsyncState;

    //结束由BeginGetResponse启动的挂起的异步操作
    FtpWebResponse uploadResponse = (FtpWebResponse)uploadRequest.EndGetResponse(ar);

    Debug.Log(uploadResponse.StatusDescription);
    Debug.Log("Upload complete");
}

    求教大神!!!!!如何把这段异步上传修改成异步下载!!!
  • 写回答

1条回答

  • threenewbee 2017-06-06 16:13
    关注

    用不着改写这段代码,直接用 WebClient.DownloadFileAsync ,写一个回调委托函数,和你上面的做法类似
    http://blog.csdn.net/youaregoo/article/details/8979149

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)