C#文件断点续传实现方法
程序员文章站
2023-01-10 16:59:31
本文实例讲述了c#文件断点续传实现方法。分享给大家供大家参考。具体实现方法如下:
///
/// 下载局域网文件
/// &l...
本文实例讲述了c#文件断点续传实现方法。分享给大家供大家参考。具体实现方法如下:
/// <summary> /// 下载局域网文件 /// </summary> /// <param name="path">文件路径,如:\\192.168.10.1\app\app\123.zip</param> /// <param name="username">计算机名称</param> /// <param name="password">计算机密码</param> static void requestwindowsshared(string path, string username, string password) { //文件总大小 int allbytescount = 0; //每次传输大小 int bytetemp = 1024; //当前位置 int byteposition = 0; //剩下大小 int remain = 0; system.net.filewebrequest request = null; system.net.filewebresponse response = null; system.io.stream stream = null; system.io.filestream filestream = null; try { uri uri = new uri(path); request = (system.net.filewebrequest)system.net.filewebrequest.create(uri); system.net.icredentials ic = new system.net.networkcredential(username, password); request.credentials = ic; response = (system.net.filewebresponse)request.getresponse(); stream = response.getresponsestream(); byte[] bytes = new byte[stream.length]; stream.read(bytes, 0, bytes.length); string filename = system.environment.getfolderpath(environment.specialfolder.desktop) + "\\" + system.io.path.getfilename(path); filestream = new filestream(filename, system.io.filemode.create, system.io.fileaccess.write, system.io.fileshare.readwrite); allbytescount = bytes.length; remain = allbytescount; while (remain > 0) { filestream.write(bytes, byteposition, bytetemp); remain = remain - bytetemp; byteposition = byteposition + bytetemp; filestream.flush(); if (remain < bytetemp) bytetemp = remain; } console.writeline("下载成功!"); } catch (exception ex) { console.writeline(ex.message); } finally { filestream.close(); filestream.dispose(); stream.close(); stream.dispose(); } } /// <summary> /// 上传文件 /// </summary> /// <param name="path">共享目录路径+文件名称</param> /// <param name="local">本地路径</param> /// <param name="username">用户名</param> /// <param name="password">密码</param> static void responsewindowsshared(string path, string local, string username, string password) { //文件总大小 int allbytescount = 0; //每次传输大小 int bytetemp = 1024; //当前位置 int byteposition = 0; //剩下大小 int remain = 0; system.net.filewebrequest request = null; system.io.stream stream = null; try { //时间戳 string strboundary = "----------" + datetime.now.ticks.tostring("x"); uri uri = new uri(path); byte[] bytes = system.io.file.readallbytes(local); request = (system.net.filewebrequest)system.net.filewebrequest.create(uri); request.method = "post"; //设置获得响应的超时时间(300秒) request.timeout = 300000; request.contenttype = "multipart/form-data; boundary=" + strboundary; request.contentlength = bytes.length; system.net.icredentials ic = new system.net.networkcredential(username, password); request.credentials = ic; stream = request.getrequeststream(); allbytescount = bytes.length; remain = allbytescount; while (remain > 0) { stream.write(bytes, byteposition, bytetemp); remain = remain - bytetemp; byteposition = byteposition + bytetemp; stream.flush(); if (remain < bytetemp) bytetemp = remain; } console.writeline("上传成功!"); } catch (exception ex) { console.writeline(ex.message); } finally { stream.close(); stream.dispose(); } }
希望本文所述对大家的c#程序设计有所帮助。
下一篇: 大家知道普洱茶的泡法吗