7.31 文件上传

文件上传:
1、将文件上传到指定路径
使用FileUpload控件,使用控件的SaveAs另存为方法,需 
要绝对路径;

string path = "Uploads/aaa.txt";//文件的相对路径
string endPath = Server.MapPath(path);//将相对路径映射 
成绝对路径
FileUpload1.SaveAs(endPath);

问题:
文件名重名,文件被覆盖

优化1:
string path = "Uploads/" + FileUpload1.FileName;// 
文件的相对路径
可以保留用户选择的文件名称

问题:
许多人都上传文件,肯定会出现重名的情况,那 
就被覆盖了

优化2:
//拼接上传时间,上传用户名,上传文件全称,防止并发 
重名问题
string name = DateTime.Now.ToString 
("yyyyMMddhhmmss") + Request.Cookies["user"].Value + 
FileUpload1.FileName;

问题:
用户可能会上传超过默认大小的文件,那么程序就会崩溃 
,最大限制为4MB大小

优化3:
扩容、在Web.config配置文件里面添加以下一句话
<system.web>
<compilation debug="false" targetFramework="4.0" />
<httpRuntime maxRequestLength="40960"/>//增加这一句 
,单位是KB
</system.web>

注意:扩容不要扩的太大,因为是占内存空间的;
作业:去网上搜一下C#大文件上传,断点续传

优化4:
增加超大验证,有客户端验证和服务端验证两种方式;

C#服务端验证:
//检查是否有选中文件
if (FileUpload1.HasFile)
{
//如果有选中文件,那么验证文件大小是否超过4MB
if (FileUpload1.PostedFile.ContentLength > (4 
* 1024 * 1024))
{
Label1.Text = 
FileUpload1.PostedFile.ContentLength.ToString();
}
}

JS客户端验证:
<script type="text/javascript">
window.onload = function () {
document.getElementById('Button1').onclick = 
function () {
var fl1 = document.getElementById 
('FileUpload1');
//判断是否有选中的文件
if (fl1.value.length <= 0) {
alert('请选择要上传的文件!');
return false;
}
else {
//验证大小是否超过限制
if (fl1.files[0].size > (4 * 1024 * 
1024)) {
alert('文件超过4MB!');
return false;
}
}
};
};
</script>

优化5:
限制用户能选择的文件类型:
限制普通人,控件属性:accept=".jpg,.jpeg,.png";
限制奇葩:
//看看你选择的文件是否符合我的要求
if (fl1.value.substr(fl1.value.length - 4) 
!= '.jpg' && fl1.value.substr(fl1.value.length - 4) != 
'.png' && fl1.value.substr(fl1.value.length - 5) != 
'.jpeg')
{
alert(fl1.value.substr 
(fl1.value.length - 4));
return false;
}

优生活网站,新增产品,需要上传产品图片,1、将图片 
传到服务器上来,2、将图片路径保存进数据库
//-----------上传图片-------------
//1、验证

//2、将选中的文件上传到服务器指定文件夹上来
string path = "images/" + DateTime.Now.ToString 
("yyyyMMddhhmmss") + FileUpload1.FileName;
FileUpload1.SaveAs(Server.MapPath(path));

//3、将图片路径存到数据库
c.img = path;

new chanpinData().Insert(c);

原文地址:https://www.cnblogs.com/a454966933/p/5745386.html