class Program
{
static bool uploadFile(string file_name, long offset = 0, string ftp_method = WebRequestMethods.Ftp.UploadFile)
{
try
{
FileInfo file_info = new FileInfo(file_name);
if (file_info.Exists == false)
{
return false;
}
FtpWebRequest upload_request = (FtpWebRequest)FtpWebRequest.Create("url" + file_info.Name);
upload_request.Credentials = new NetworkCredential("a", "a");
upload_request.ContentLength = file_info.Length;
upload_request.Timeout = 60000;
upload_request.Method = ftp_method;
upload_request.ContentOffset = offset;
Stream request_stream = upload_request.GetRequestStream();
FileStream file_stream = file_info.OpenRead();
offset = copyDataToDest(Path.GetFileName(file_name), file_stream, request_stream, offset);
if (offset != 0)
{
uploadFile(file_name, offset, WebRequestMethods.Ftp.AppendFile);
}
}
catch (Exception ex)
{
return false;
}
return true;
}
static long copyDataToDest(string file_display_name, Stream source, Stream dest, long offset)
{
try
{
byte[] buffer = new byte[1024];
source.Position = offset;
int current_read_count = 0;
while (true)
{
current_read_count = source.Read(buffer, 0, 1024);
if (current_read_count == 0)
{
offset = 0;
break;
}
dest.Write(buffer, 0, current_read_count);
dest.Flush();
offset += current_read_count;
Console.WriteLine(offset / 1024 / 1024 + "/" + source.Length / 1024 / 1024 + "MB");
}
}
catch
{
}
try
{
source.Close();
dest.Close();
}
catch
{
}
return offset;
}
static void Main(string[] args)
{
uploadFile("D:\\1.data");
}
}
以上是我的上传代码,如果产生断点续传,续传的文件就会出错,请问哪里写错了?