Asp.net文件上传之前获取文件的大小
通常步骤是这样的:1、用户选择文件;
2、点击某个回传按钮后,页面提交,在后台进行处理。
但是,步骤2的时候,实际上文件已经被上传至缓存了。
我希望能够在步骤2的时候,阻止文件被上传(我可以做一些文件大小方面的限制,在允许范围内才可以上传,否则就阻止该文件上传)
我尝试过在 HttpModule和Global.asax 里进行控制,但是都无法阻止文件被上传。
望高手指点一下。
--------------------编程问答-------------------- 我都是在后台判断文件大小的。文件过大,就不处理了。返回告知用户文件过大。 --------------------编程问答-------------------- js 获取文件大小
<SCRIPT LANGUAGE="JavaScript">
function getFileSize(fileObj)
{
var fso = new ActiveXObject('Scripting.FileSystemObject');
var file = fso.GetFile(fileObj.value);
var fileSize = file.Size ;
alert(fileSize/1024/1024);
if((fileSize/1024) < 1024){
alert(fileSize/1024+"K");
}else if( ((fileSize/1024) > 1024) && ((fileSize/(1024*1024)) < 1024)){
alert(fileSize/(1024*1024)+"M");
}else{
alert(fileSize/(1024*1024*1024)+"G")
}
}
</SCRIPT>
<input type="file" onchange="getFileSize(this);" />
http://ss3025.iteye.com/blog/1133434
--------------------编程问答-------------------- 使用Silverlight或者SWFUpload实现,上传控件实现不了 --------------------编程问答--------------------
#region 上傳EXCEL文件--------------------编程问答-------------------- 先感谢一下以上4位的回答。
ArrayList excelType = new ArrayList();//文件类型
excelType.Add("application/vnd.ms-excel");
string name = fileUpxls.FileName;
string[] arrName = name.Split('.');
NewExcelName = arrName[0] + "_" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + rd.Next(11, 99).ToString() + "." + arrName[1];
int size = fileUpxls.PostedFile.ContentLength;//获取文件大小,自行判断或限制即可
string type = fileUpxls.PostedFile.ContentType;
savepath = Server.MapPath("~/Products") + "\\" + NewExcelName;
hfExcelName.Value = savepath;
if (excelType.Contains(fileUpxls.PostedFile.ContentType))
{
fileUpxls.SaveAs(savepath);
btnSaveDB.Visible = true;
strMessage = "恭喜,商品訊息上傳成功!";
MessageBoxHelper.Show(this, strMessage);
}
else
{
strMessage = "Sorry,文件上傳格式不正確或要上傳的文件在打開狀態,請確認!";
MessageBoxHelper.Show(this, strMessage);
}
#endregion
glasses1999:
我就是想避免这种情况,因为到达后台的时候,文件其实已经上传到服务器的内存里了,
如果文件太大,好不容易上传完之后,告诉用户文件太大。。这个体验不太好。。
highpr:
js+ActiveX方法我想过,但是因为局限性太大
1、只能在IE下;
2、new ActiveXObject('Scripting.FileSystemObject');的时候,如果浏览器的安全性选项没有打开的话,应该会提示无法创建(至少也会提示需要用户同意)。
想顺利使用的话必须要降低浏览器安全性选项,倒不是说多么不安全,而是对用户来说太烦了。我公司网站的用户都是不怎么懂电脑的人。。。
net_lover:
这是最后不得已的选择了。
yanlele424:
非常感谢你的帮助,但是和我的需求还是有不小的差距。我的本意是:在HttpRequest发起的时候截取到这个Request,然后对Request进行处理,使得它能够不上传文件。 --------------------编程问答-------------------- http://www.open-open.com/home/space-668-do-blog-id-741.html
看看有木有你要的 --------------------编程问答--------------------
+++ --------------------编程问答--------------------
补充:.NET技术 , ASP.NET