C#FTP上传图片成功但是图片只有4KB很不理解啊有的只有0KB我上传1个1KB的图片在FTP也是4KB 怎么变大变小的
上传时候并没有报错而且看文件大小也对
private bool Upload(string fileName)
{
FtpWebRequest ftpWebRequest = null;
FileStream locaFileStream = null;
Stream requestStream = null;
try
{
//读取文件
FileInfo fileInfo = new FileInfo(fileName);
//连接FTP资源
ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpIp + "/" + fileInfo.Name));
//登录用户名和密码
ftpWebRequest.Credentials = new NetworkCredential(user, pwd);
//默认为true,连接不会关闭
ftpWebRequest.KeepAlive = false;
//执行什么命令
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
//文件大小
ftpWebRequest.ContentLength = fileInfo.Length;
//传输类型
ftpWebRequest.UseBinary = true;
//这里本来是缓存大小啊。但是我改变成和文件大小一样上传就成功,我改成2048上传文件只有2KB 很不解啊我查了N多资料都说这个属性是每次读取晓得啊求解释啊
int byteLength = (int)fileInfo.Length;
byte[] buff = new byte[byteLength];
int contntLen = 0;
//读取给定路径文件
locaFileStream = fileInfo.OpenRead();
//得到流
requestStream = ftpWebRequest.GetRequestStream();
//每次读取流
contntLen = locaFileStream.Read(buff, 0, byteLength);
if (contntLen != 0)
{
requestStream.Write(buff, 0, byteLength);
contntLen = locaFileStream.Read(buff, 0, contntLen);
return true;
}
return false;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
finally
{
if (requestStream != null)
{
requestStream.Close();
}
if (locaFileStream != null)
{
locaFileStream.Close();
}
}
}
我改成2048上传文件只有2KB ,按你的程序是没错的
你只上传一次,当然是这个结果
if (contntLen != 0)//应该是while吧
{
requestStream.Write(buff, 0, byteLength);
contntLen = locaFileStream.Read(buff, 0, contntLen);//应该是 contntLen = locaFileStream.Read(buff, 0, byteLength);
return true;//应该删除
}
哎,这么明显的错误,自己断点跟一下就好,明显断点调试没有。
。。。不会吧?
大神遇到过这样的问题吗
@只需要一个眼神: 没遇到过,谁知道你是怎么处理的?
ftpWebRequest.ContentLength = fileInfo.Length;
这个。。。你搜一下东西,应该不是一个东西。。。
fileInfo的长度是什么?应该是你图片转成byte数组以后的那个长度吧?
@只需要一个眼神: 或者简单点,貌似 new webclient().UploadFile也可以的吧?上面那个我看了一下,fileInfo.Length是文件的大小,就是字节是没错。
是否流丢失了?
初步还以是文件保存的问题。
你自己程序有问题,写文件流如果用缓存肯定要循环语句的。
FTP打开上传的图片文件报错: 文件系统错误12003
求解啊
是上传时候出错误 还是文件上传之后打开文件错误啊
@只需要一个眼神: 我解决了,问题出在Uri地址中出现了 空格
顺便问一下 上传成功后 我要在winform 查看上传的图片 你有类似代码么?