我想将文件分块来读取(比如,每块 10k 的大小),然后逐块地写回服务器(通过Webservice)。现在的问题是最终写回服务器的文件,Size好像是对的,但,打开,内容有问题。比如,读取的是一张图片,上传完成后,服务器端确实是有个图片文件生成,大小也相等,就是打开为空白。相关代码段如下,请大家指点,指点,谢谢。
读: FileInfo fi = new FileInfo(sFullName);
FileStream fs = fi.OpenRead();
fs.Seek(0, SeekOrigin.Begin);
BinaryReader r = new BinaryReader(fs);
byte[] temp = null;
iUploadTimes = (int)fs.Length / (iBaseSize * 1024);
long lRemainSize = fs.Length - iBaseSize * iUploadTimes * 1024;
if (lRemainSize > 0)
iUploadTimes = iUploadTimes + 1;
for (int i = 1; i <= iUploadTimes; i++)
{
temp = new byte[iBaseSize * 1024];
r.Read(temp, 0, iBaseSize * 1024); if (i == iUploadTimes)
{
temp = new byte[(int)lRemainSize];
r.Read(temp, 0, (int)lRemainSize);
}
bResult = SubmitData(temp,XX,XX,XX) // WebService接口调用 }写: try
{
string sDateStr = sSavePath.Substring(sSavePath.LastIndexOf("\\") + 1, sSavePath.Length - sSavePath.LastIndexOf("\\") - 1);
sPhysicalPath = sSavePath + "\\" + sFileName;
sAttchmentURL = sAttchmentURL + "/" + sDateStr + "/" + sFileName;
FileStream fs = null;
if (iUpLoadTimes == 1)
{
fs = new FileStream(sPhysicalPath, FileMode.Create);
fs.Write(postArray, 0, postArray.Length);
fs.Close();
}
else
{
fs = new FileStream(sPhysicalPath, FileMode.Append);
fs.Write(postArray, 0, postArray.Length);
fs.Close();
}
}
catch
{
sAttchmentURL = "文件写入失败!";
bIsSuccess = false;
}
读: FileInfo fi = new FileInfo(sFullName);
FileStream fs = fi.OpenRead();
fs.Seek(0, SeekOrigin.Begin);
BinaryReader r = new BinaryReader(fs);
byte[] temp = null;
iUploadTimes = (int)fs.Length / (iBaseSize * 1024);
long lRemainSize = fs.Length - iBaseSize * iUploadTimes * 1024;
if (lRemainSize > 0)
iUploadTimes = iUploadTimes + 1;
for (int i = 1; i <= iUploadTimes; i++)
{
temp = new byte[iBaseSize * 1024];
r.Read(temp, 0, iBaseSize * 1024); if (i == iUploadTimes)
{
temp = new byte[(int)lRemainSize];
r.Read(temp, 0, (int)lRemainSize);
}
bResult = SubmitData(temp,XX,XX,XX) // WebService接口调用 }写: try
{
string sDateStr = sSavePath.Substring(sSavePath.LastIndexOf("\\") + 1, sSavePath.Length - sSavePath.LastIndexOf("\\") - 1);
sPhysicalPath = sSavePath + "\\" + sFileName;
sAttchmentURL = sAttchmentURL + "/" + sDateStr + "/" + sFileName;
FileStream fs = null;
if (iUpLoadTimes == 1)
{
fs = new FileStream(sPhysicalPath, FileMode.Create);
fs.Write(postArray, 0, postArray.Length);
fs.Close();
}
else
{
fs = new FileStream(sPhysicalPath, FileMode.Append);
fs.Write(postArray, 0, postArray.Length);
fs.Close();
}
}
catch
{
sAttchmentURL = "文件写入失败!";
bIsSuccess = false;
}
{
if (i == iUploadTimes)
{
temp = new byte[(int)lRemainSize];
r.Read(temp, 0, (int)lRemainSize);
}
else
{
temp = new byte[iBaseSize * 1024];
r.Read(temp, 0, iBaseSize * 1024);
}
bResult = SubmitData(temp,XX,XX,XX) // WebService接口调用
}
FileInfo fi = new FileInfo(sFullName);
FileStream fs = fi.OpenRead();
fs.Seek(0, SeekOrigin.Begin);
BinaryReader r = new BinaryReader(fs);
byte[] temp = null;
iUploadTimes = (int)fs.Length / (iBaseSize * 1024);
long lRemainSize = fs.Length - iBaseSize * iUploadTimes * 1024;
for (int i = 1; i <= iUploadTimes; i++)
{
temp = new byte[iBaseSize * 1024];
r.Read(temp, 0, iBaseSize * 1024);
bResult = SubmitData(temp,XX,XX,XX) // WebService接口调用
}
if (lRemainSize > 0)
{
temp = new byte[(int)lRemainSize];
r.Read(temp, 0, (int)lRemainSize);
bResult = SubmitData(temp,XX,XX,XX) // WebService接口调用
}