FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\TestFile.txt)来指定要上载的文件。用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件

 代码如下 复制代码
/// 使用FileUpload控件上传文件

/// this

/// 文件保存目录,相对路径示例:"~/UploadFile",绝对路径示例:"E:UploadFile",提示:web路径中用斜杠,文件系统中用反斜杠

/// FileUpload

/// 是否检查文件名,true表示不允许文件名重复,false则文件名加时间重命名

/// 允许上传的文件类型,扩展名,例:"xls",不限制类型传null即可

/// 文件绝对路径

public static string UploadFileToServer(Page page, String path, FileUpload fu, Boolean checkFileName, params String[] allowTypes)

{

//记录文件名

string fileName = fu.FileName;

//是否选择文件

if (string.IsNullOrEmpty(fileName))

{

MsgBox.Alert(page, "请先选择文件!");

return null;

}

//记录文件扩展名

string fileType = fileName.Substring(fileName.LastIndexOf('.') 1);

//判断扩展名是否允许

bool typeRight = false;

//记录允许上传的文件类型

string allowType = "";

//是否指定文件类型

if (allowTypes != null)

{

//遍历允许文件类型数组

for (int i = 0; i < allowTypes.Length; i )

{

//已判断为允许则不再判断

if (!typeRight)

{

//扩展名大小转换判断是否符合要求

if (fileType == allowTypes[i] || fileType.ToLowerInvariant() == allowTypes[i] || fileType.ToUpperInvariant() == allowTypes[i])

{

//符合要求则设置为允许

typeRight = true;

}

}

//记录允许上传的文件类型

allowType = "." allowTypes[i] " | ";

}

//删除最后一个分隔符

allowType = allowType.Remove(allowType.LastIndexOf("|"));

}

//未指定文件类型时

else

{

//直接设置为允许

typeRight = true;

}

//扩展名不正确

if (!typeRight)

{

//提示允许上传的文件类型

MsgBox.Alert(page, "文件格式不正确,请选择扩展名为[  " allowType " ]的文件!");

return null;

}

//是否可以正常获取文件

if (fu.PostedFile.ContentLength == 0)

{

MsgBox.Alert(page, "找不到选择的文件,请重新选择!");

return null;

}

//目录绝对路径

string dirRootPath = "";

//文件路径异常处理

try

{

//如果路径是相对路径

if (!Path.IsPathRooted(path))

{

//目录相对路径转绝对路径

dirRootPath = HttpContext.Current.Server.MapPath(@"" path "/").Trim();

}

else

{

//保存路径

dirRootPath = path;

}

//文件上传目录是否存在

DirectoryInfo dirInfo = new DirectoryInfo(dirRootPath);

if (!dirInfo.Exists)

{

//不存在则创建此目录

dirInfo.Create();

}

}

catch (Exception pathError)

{

//异常弹窗提示

MsgBox.Alert(page, "错误:" pathError.Message);

return null;

}

//记录文件绝对路径

string fileRootPath = "";

//需要检查文件名是否重复时

if (checkFileName)

{

//文件绝对路径

fileRootPath = Path.Combine(dirRootPath, fileName);

//文件名已存在

if (File.Exists(fileRootPath))

{

//提示改名

MsgBox.Alert(page, "服务器已存在同名文件,请修改文件名后重试!");

return null;

}

}

else

{

//选择的文件按时间重命名

string newFileName = fileName.Remove(fileName.LastIndexOf(".")) DateTime.Now.ToString("yyMMddHHmmss") DateTime.Now.Millisecond.ToString() "." fileType;

//文件绝对路径

fileRootPath = Path.Combine(dirRootPath, newFileName);

}

//上传至服务器

fu.SaveAs(fileRootPath);

//返回文件绝对路径

return fileRootPath;

三个方面需要注意:

1.确认是否包含文件

在调用 SaveAs 方法将文件保存到服务器之前,使用 HasFile 属性来验证 FileUpload 控件确实包含文件。若 HasFile 返回 true,则调用 SaveAs 方法。如果它返回 false,则向用户显示消息,指示控件不包含文件。不要通过检查PostedFile 属性来确定要上载的文件是否存在,因为默认情况下该属性包含 0 字节。因此,即使 FileUpload 控件为空,PostedFile 属性仍返回一个非空值。

2.文件上传大小限制

默认情况下,上传文件大小限制为 4096 KB (4 MB)。可以通过设置 httpRuntime 元素的 maxRequestLength 属性来允许上载更大的文件。若要增加整个应用程序所允许的最大文件大小,请设置 Web.config 文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置 Web.config 中 location 元素内的 maxRequestLength 属性。

上载较大文件时,用户也可能接收到以下错误信息:

aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).

以上信息说明,上传文件的大小不能超过服务器内存大小的60%。这里的60%是Web。config文件的默认配置,是配置节中的 memoryLimit 属性默认值。虽然可以修改,但是如果上传文件越大,成功几率越小,不建议使用。

3.上传文件夹的写入权限

应用程序可以通过两种方式获得写访问权限。您可以将要保存上载文件的目录的写访问权限显式授予运行应用程序所使用的帐户。您也可以提高为 ASP.NET 应用程序授予的信任级别。若要使应用程序获得执行目录的写访问权限,必须将 AspNetHostingPermission 对象授予应用程序并将其信任级别设置为 AspNetHostingPermissionLevel.Medium 值。提高信任级别可提高应用程序对服务器资源的访问权限。请注意,该方法并不安全,因为如果怀有恶意的用户控制了应用程序,他(她)也能以更高的信任级别运行应用程序。最好的做法就是在仅具有运行该应用程序所需的最低特权的用户上下文中运行 ASP.NET 应用程序。

asp.net fileupload 文件上传后服务器上找不到文件,Asp.net中FileUpload控件上传文件例子...相关推荐

  1. activex 控件的id 定义位置+使用ocx控件的客户端程序中对控件定义的文件中控件id定义的位置...

    activex 控件的id 定义位置 // SuperDisplayCtl.cpp IMPLEMENT_OLECREATE_EX(CSuperDisplayCtrl, "SuperDispl ...

  2. mfc调取摄像头显示并截图_用OpenCV在MFC Dialog中Picture控件上显示摄像头采集实时视频...

    OpenCV之所以能在MFC Dialog的Picture控件上绘图,全靠了CvvImage::DrawToHDC()方法.这就是下文为出现CvvImage和HDC的原因.下面是具体过程,用OpenC ...

  3. oc中在控件上显示图片

    当我们想在控件上改变图片的时候,我们需要做的是获得图片的引用,然后调用函数,来设置图片.那么具体是怎样来操作. 第一步是获得控件的引用: @property(weak,nonatomic)IBOutl ...

  4. 母版中menu控件上传后出现脚本错误

    这几天帮朋友做个小网站,为了网站更容易扩展,所以使用了.menu控件做网站导行.本来在做的时候没出错,可上 传之后却显示不出,动态菜单的部分,并且提示脚本错误.于是乎上网开始找答案,找了大半天.终于找 ...

  5. 安卓案例:列表控件上拉加载更多

    文章目录 一.上拉加载更多使用场景 二.案例演示 - 列表控件上拉加载更多 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[ListViewLoadMore] 2.将背景图片拷贝到 ...

  6. ASP.NET 2.0使用FileUpload控件上传文件示例

    在ASP.NET 2.0中使用FileUpload服务器控件很容易的就能将文件上传到服务器,一个简单的例子如下: aspx: 程序代码 <%@ Page Language="C#&qu ...

  7. 使用 SAP UI5 FileUploader 控件上传本地文件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  8. JQuery专栏之十五————利用文件框控件file实现文件的上传

    15. 利用文件框控件file实现文件的上传. 文件上传的方法有很多,jQuery也有许多文件上传控件.本例采用最基本的HTML文件框(<input type='file')实现文件上传,不限制 ...

  9. asp.net夜话之九:验证控件(上)

        本篇要讲述的知识点如下: 数据验证介绍 纯客户端脚本验证 asp.net验证控件概述 RequiredFieldValidator控件 CompareValidator控件 RangeVali ...

最新文章

  1. linux 安装 zookeeper 管理端, dubbo-admin 访问 404
  2. Vue为v-html中标签添加CSS样式
  3. 编辑器source insight,sublime,编码 utf-8和 GB2312
  4. Vue — 第三天(计算属性和json-server)
  5. java foreach 跳过本次循环_【Java】对foreach循环的思考
  6. oracle的undo表空间不足,undo表空间不足,ORA-30036 unable to extend segment by ...
  7. mysql text类型 使用方法_MySQL使用TEXT/BLOB类型的知识点详解
  8. JS实现表单多文件上传样式美化支持选中文件后删除相关项
  9. 条件判断_判断疑似陨石应具备什么条件下,才能判断陨石真伪
  10. python问卷星微信登录_Python+Selenium自动刷问卷星问卷
  11. Rimworld Mod制作教程7 comp组件
  12. 百度自定义技能真机测试
  13. 随机排列与八卦太极的联系
  14. Web答辩问题整合一
  15. CAD高版本窗体阵列LISP_[转载]AutoCAD高版本怎么把阵列对话框调出来?
  16. SEED-RL安装教程
  17. 涉案金额600万!微粒贷诈骗团伙被警方一锅端
  18. 控制工程 留数法(看一遍就懂了)
  19. nacosk8s部署_在K8S中部署Nacos配置中心
  20. Mongo之中标麒麟V7环境下安装解压版

热门文章

  1. 今天玩angry birds
  2. 工控机做文件服务器,工控机、服务器改造工业私有云解决方案
  3. 我对洛伦兹曲线与GINI系数的一点看法
  4. JS设计模式——工厂模式
  5. 0001 利用字符打印输出点阵图
  6. swit4 获取属性列表
  7. c语言里void什么作用,c语言中void的含义是什么?如何使用?
  8. 过年春联不可少,python带你制作春联,体验不一样的过年氛围
  9. 利用浏览器指纹技术进行防恶意点击和恶意骚扰刷新系统
  10. 计算机的发展与应用 教学设计,第二课《计算机的发展与应用》教学设计.docx