上传文件过大
我上传的东西才几十K的就报错,说无法存取关闭文件.如果30K左右的就没事啊大家帮帮忙啊.... --------------------编程问答-------------------- 大家帮下忙啊 --------------------编程问答-------------------- 只要空间够,多大的文件都可以上传
摘录:《程序员秘书》--源代码--网络--用NET的类向FTP服务器上传文件
private void UploadFile()//上传文件
{
try
{
label3.BeginInvoke(new ChangeString(Setlabel5Text), "准备上传数据....");
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(FTPfile);//FTP服务器(包括路径和文件名)
request.UsePassive = true;
request.Credentials = new NetworkCredential(FTPUser, FTPpassword);//FTP服务器的用户名和密码
request.Method = WebRequestMethods.Ftp.UploadFile;//上传文件
FileStream FStream = new FileStream(file, FileMode.Open, FileAccess.Read);
request.ContentLength = FStream.Length;
int TotalBytes = (int)FStream.Length;
Stream requestStream = request.GetRequestStream();//上传数据流
progressBar1.BeginInvoke(new ChangeInt(SetprogressBar1Maximum), TotalBytes);//设置进度条的最大值
byte[] DataByte = new byte[10240];//一次读取数据块的大小
int StartPos = 0;//已上传的数据大小
TimeSpan TotalTs;//已上传文件的时间
double PByte = 0;
label3.BeginInvoke(new ChangeString(Setlabel5Text), "正在上传数据....");
DateTime StartTime = DateTime.Now;
while (IsUploadFile)
{
int ReadCount = FStream.Read(DataByte, 0, DataByte.Length);//读取一数据块
if (ReadCount > 0) requestStream.Write(DataByte, 0, ReadCount);//上传一数据块
StartPos += ReadCount;
progressBar1.BeginInvoke(new ChangeInt(SetprogressBar1Value), StartPos);//已上传文件的进度
TotalTs = DateTime.Now - StartTime;
PByte = StartPos / TotalTs.TotalSeconds / 1024;//计算速度,byte/秒换算成KB/秒
label4.BeginInvoke(new ChangeString(Setlabel4Text), string.Format("{0}KB/秒", (int)PByte));
if (TotalBytes == StartPos) IsUploadFile = false;//已上传完成
}
requestStream.Close();
FStream.Close();
label3.BeginInvoke(new ChangeString(Setlabel5Text), "上传完毕!");
if (TotalBytes != StartPos) label3.BeginInvoke(new ChangeString(Setlabel5Text), "取消上传");
}
catch (Exception Mye)
{
label3.BeginInvoke(new ChangeString(Setlabel5Text), Mye.Message);
}
}
立即成为编程经验丰富的程序员不是梦,详见:http://www.psec.net.cn --------------------编程问答-------------------- 下面是我写的上传图片的代码 你可以看下
protected void uploadfile_OnClick(object sender, EventArgs e)
{
if (!inputFile.HasFile)
{
ShowAlter("请先选择一张图片");
}
else
{
string filepath = inputFile.PostedFile.FileName;//得到的是文件的完整路径,包括文件名
string fileType = inputFile.FileName.Remove(0, inputFile.FileName.LastIndexOf("."));
if (fileType == ".jpg" && inputFile.PostedFile.ContentLength < 2 * 1024 * 1024)//定义格式和大小
{
string extension = Path.GetExtension(filepath);
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff");
string dir = Server.MapPath("~/Resources/MIS/Image/");
string newPath = Path.Combine(dir, fileName + extension);
for (int i = 1; File.Exists(newPath) && i < 10000; i++)
{
newPath = Path.Combine(dir, string.Format("{0}_{1}{2}", fileName, i, extension));
}
Bitmap img;
using (var fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
img = new Bitmap(fs);
}
var newImage = new Bitmap(100, 100);
using (Graphics g = Graphics.FromImage(newImage))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(img,
new Rectangle(0, 0, newImage.Width, newImage.Height),
new Rectangle(0, 0, img.Width, img.Height),
GraphicsUnit.Pixel);
}
newImage.Save(newPath, ImageFormat.Jpeg);
imgPhoto.ImageUrl = newPath;
}
else
{
ShowAlter("只能上传为.jpg的文件或者上传文件超过2M");
}
} --------------------编程问答-------------------- 文件切割! --------------------编程问答-------------------- 修改web.config文件吧。
asp.net夜话之十一:web.config详解
在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代码再重新编译,这种部署方式非常麻烦。在.net中提供了一种便捷的保存项目配置信息的办法,那就是利用配置文件,配置文件的文件后缀一般是.config,在asp.net中配置文件名一般默认是web.config。每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中。在发布Web应用程序时web.config文件并不编译进dll文件中。如果将来客户端发生了变化,仅仅需要用记事本打开web.config文件编辑相关设置就可以重新正常使用,非常方便。本篇要讲述的知识如下:配置文件的查找优先级配置文件节点说明配置文件的操作 --------------------编程问答-------------------- <httpRuntime>节点
<httpRuntime>节点用于对 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。
例如下面的配置控制用户最大能上传的文件为40M(40*1024K),最大超时时间为60秒,最大并发请求为100个。
<httpRuntime maxRequestLength="40960" executionTimeout="60" appRequestQueueLimit="100"/>
补充:.NET技术 , C#