110,535
社区成员
发帖
与我相关
我的任务
分享
private void button3_Click_1(object sender, EventArgs e)
{
if (txtFileName.Text != "")
{
label1.Visible = true;
int step = 1000000; //步数
byte[] byData = new byte[step]; //定义字节数组
FileInfo fileInfo = new FileInfo(txtFileName.Text); //定义一个fileInfo 来获取文件的详细信息
if (MessageBox.Show(" 确定上传么?", "上传文件", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
progressBar.Maximum = (int)(fileInfo.Length / step); //进度栏停止前的最大值设为文件的长度/速度
progressBar.Step = 1; //增加进度栏的当前位置时所根据的数量
progressBar.Visible = true; //设置为可见
FileStream fileStream = null; //定义fileStream用于对文件进行读写
long sentCout = (fileInfo.Length / step); //
int lastLength = (int)(fileInfo.Length % step); //
try
{
fileStream = new FileStream(txtFileName.Text, FileMode.Open, FileAccess.Read); //三个参数作用分别是要读的文件的文件名,打开文件所采用的模式, Read、Write 还是 ReadWrite 文件访问权限来打开文件
for (long i = 0; i < sentCout; i++)
{
long position = fileStream.Position; //获取此流的当前位置
fileStream.Read(byData, 0, step); //从流中读取字节块并将该数据写入给定缓冲区中,三个参数的含义1.返回时包含指定的字节数组。2.从0处开始读取字节。3.最多参数的字节数为step
webtest.FileUp(byData, fileInfo.Name, step, position);//调用webservice方法,进行数据上传
progressBar.PerformStep(); //以 Step 屬性的數量前移進度列的目前位置
}
if (lastLength != 0)
{
long position = fileStream.Position; //获取此流的当前位置
fileStream.Read(byData, 0, lastLength); //从流中读取字节块并将该数据写入给定缓冲区中
webtest.FileUp(byData, fileInfo.Name, lastLength, position);//调用webservice方法,进行数据上传
progressBar.PerformStep(); //以 Step 屬性的數量前移進度列的目前位置
}
int a = 10;
webtest.UpFile(fileInfo.Name, a, webtest.Up() + fileInfo.Name);
webtest.insertEbook(fileInfo.Name, a);
MessageBox.Show("文件上传成功!");
label1.Text = "文件" + fileInfo.Name + "上传成功";
}
catch (Exception ex)
{
MessageBox.Show("上传错误,请与管理员联系/n" + ex.Message);
}
finally
{
fileStream.Close(); //关闭当前流
fileStream.Dispose();//释放由IO使用的所有资源
DataSet dataSet = webtest.show();
treeList1.DataSource = dataSet.Tables[0];
treeList1.ExpandAll();
}
progressBar.Value = 0;
progressBar.Visible = false;
// }
}
}
else
{
MessageBox.Show("请选择上传文件");
}
}
[WebMethod]
public void FileUp(byte[] byData, string filename, int step, long position)
{
string filePath = Server.MapPath(@"~\Up\" + filename); //设置路径
FileStream fileStream = new FileStream(filePath, FileMode.Append); //文件读取流定义并且初始化
try
{
fileStream.Position = position; //设置流的当前位置为
fileStream.Write(byData, 0, step);//使用从缓冲区读取的数据将字节块写入该流
}
catch
{
}
finally
{
fileStream.Close(); //关闭
}
}
private void Down_ButtonClick(object sender, EventArgs e)
{
int step = 10;
byte[] byData = new byte[step];
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "所有文件(*.*)|*.*|text|*.txt";
saveFileDialog.ValidateNames = true;
saveFileDialog.CheckPathExists = true;
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
saveFileDialog.FileName = fName;
FileInfo fileInfo = new FileInfo(selectItem);
long fileLength = fileInfo.Length;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
progressBar.Maximum = (int)(fileLength / step);
progressBar.Step = 1;
progressBar.Visible = true;
FileStream fileStream = null;
long sentCout = (fileLength / step);
int lastStep = (int)(fileLength % step);
try
{
fileStream = new FileStream(saveFileDialog.FileName, FileMode.Append, FileAccess.Write);
for (long i = 0; i < sentCout; i++)
{
long position = fileStream.Position;
byData = webtest.FileDownlond(fName, step, position);
fileStream.Write(byData, 0, step);
progressBar.PerformStep();
}
if (lastStep != 0)
{
long position = fileStream.Position;
byData = webtest.FileDownlond(fName, step, position);
fileStream.Write(byData, 0, step);
progressBar.PerformStep();
}
MessageBox.Show("文件下载成功!");
}
catch (Exception ex)
{
MessageBox.Show("下载错误,请与管理员联系/n" + ex.Message);
}
finally
{ fileStream.Close(); }
progressBar.Value = 0;
progressBar.Visible = false;
// refreshGridViewInformation();
}
}
[WebMethod]
public byte[] FileDownlond(string filename, int step, long position)
{
byte[] byData = new byte[step];
string filePath = Server.MapPath(@"~\Up\" + filename);
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
fileStream.Position = position;
fileStream.Read(byData, 0, step);
}
catch
{
throw;
}
finally
{
fileStream.Close();
}
return byData;
}