提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2011-05-17 11:36:49.000|阅读 2500 次
概述:这些天一直在弄文件上传,从中学到了一些知识和大家分享一下,同时也希望大家帮忙指正。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
这些天一直在弄文件上传,从中学到了一些知识和大家分享一下,同时也希望大家帮忙指正。
先看看FileUpload控件吧,这个一般都比较熟悉,它是VS的一个自定义控件用起来很方便,但是值得注意的是每次上传文件时,只能选取一个文件,也就是说每次我们上传文件时,只能一个控件上传一个文件。对于多文件上传的话我想如果限定在此控件的话,那么只能多次添加文件实现,或者利用多个FileUpload的控件一起上传达到上传多文件目的。但不管哪个方法原理都是一样的我们并不能一个控件选取多个文件。下面是我我写的关于多个控件一起上传文件代码
首先,需要在前台Default.aspx中拖放多个FileUpload的控件(这里放四个)然后放一个按钮
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload runat="server" Width="320px"ID="FileUpload1" class="text"></asp:FileUpload>
<asp:FileUpload runat="server" Width="320px" ID="FileUpload2" class="text"></asp:FileUpload>
<asp:FileUpload runat="server" Width="320px" ID="FileUpload3" class="text"></asp:FileUpload>
<asp:FileUpload runat="server" Width="320px" ID="FileUpload4" class="text"></asp:FileUpload>
</div>
<div>
<p align="center"><asp:Button ID="FileUpload" runat="server" Text="开始上传" onclick="FileUpload_Click" /> </p>
</div>
</form>
</body>
这里主是演示下原理 布局就随意了
添加好按钮后在设计模式下双击添加点击事件
下面Default.aspx.cs中的按钮点击事件
#region //消息输出
protected void ShowMessageBox(string strMessage)
{
Response.Write(string.Format("<script>alert('{0}')</script>", strMessage));
}
#endregion
protected void FileUpload_Click(object sender, EventArgs e)
{
HttpFileCollection hfc = Request.Files;//获取上传文件
for (int i = 0; i < hfc.Count; i++)
{
if (hfc[i].ContentLength > 0)
{
bool filesAllow = false;//设置文件是否被上传
//从控件中读取文件名
string strFilename = hfc[i].FileName;
//读取设置文件格式,判断上传文件格式是否满足条件
string Type = ConfigurationManager.AppSettings["FileTypeLimit"].ToString();
//将字符串差分
string[] fileType = Type.Split(';');
//获取上传文件后缀
string name = strFilename.Substring(strFilename.LastIndexOf("."),
strFilename.Length - strFilename.LastIndexOf("."));
// string fileExtension = Path.GetExtension
(strFilename).ToLower();//得到上传文件格式
for (int k = 0; k < fileType.Length; k++)//判断上传文件是否匹配
{
if (name == fileType[k])
filesAllow = true;
}
if (filesAllow == true)
{
//获取上传文件限制大小
int Filelength = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"].ToString());
//获取上传文件的大小
int localFileLength = hfc[i].ContentLength;
if (localFileLength/1024<= Filelength)
{
//获取上传文件路径
string strFileUploadPath = ConfigurationManager.AppSettings
["FileUplodePath"].ToString();
//自定义文件名
Random rd = new Random();
int num1 = rd.Next(1000, 9999);
string Fname = num1.ToString()+ name;//得到自定义文件名
//合成物理路径
string strFilePhysicalPath = strFileUploadPath+"\\"+Fname;
hfc[i].SaveAs(strFilePhysicalPath);
ShowMessageBox("文件上传成功");
}
else
{
ShowMessageBox("上传文件太大");
break;
}
}
else
{
ShowMessageBox("请选择合适文件上传");
break;
}
}
}
}
配置文件web.comfig设置
<appSettings>
<!—文件类型设置-->
<add key="FileTypeLimit" value=".jpg;.bmp;.gif;.png;.jpeg;.pdf;.rar;.xls;.doc;.txt"/>
<!—文件上传路径设置-->
<add key="FileUplodePath" value="F:\\ "/>
<!—文件大小限制kb -->
<add key="FileSizeLimit" value="1000"/>
</appSettings>
有了这些基本可以实现文件上传了
FileUpload基本就这些 现在重点看看SWfUpload控件
对于SWfUpload控件网上介绍很多这里我绝大多数也是引用 但重要的是怎样实现它的强大功能。
SWfUpload控件
SWFUpload使用一个Flash影片来控制文件的选择和上传。此FLASH中包含一个用户自定制UI的按钮,点击该按钮能够激活
Flash本身的高级文件上传对话框,它能够根据用户的设置来进行单文件或者是多文件的上传。
SWFUpload由4部分组成:
1. 初始化和设置(Javascript)
2. JavaScript 库: SWFUpload.js
3. SWFUpload.swf(V2.2.0版本放弃了对flash 8的支持)
4. 事件处理(Javascript)
SWFpload必须在页面中初始化,一般可以在window.onload事件中完成此操作。它的构造函数需要一个Object类型的设置对象。 这个设置对象一般是一个直接定义的Object类型变量,直接传递给SWFUpload的构造函数。
初始化的SWFUpload对象的引用需要保留下来,因为当显示文件选择对话框和启动文件上传的时候需要这个实例的
引用。
别的就不多说了,相关的介绍网上很多,可以自己查阅一下
SWFUpload控件是个组件,自己使用时并没有实现上传图片的水印效果,只是实现了文件上传功能
说一下主要步骤
一、上传文件需要 要两个页面一个是Default.aspx 还有一个是upload.aspx
在工程里添加新建项选文件夹 分别添加Flash ,js,images 三个文件夹
就我的理解简单说一下: Default页面主要进行页面初始化,而upload页面主要执行文件上传
Flash文件夹中存放swfupload.swf 文件, js文件夹存放handlers.js 、swfupload.js文件,
images文件夹主要存放按钮图片swfupload_uploadBtn.png(随便其他按钮图片也行要和初始化文件路径中的一致)
二、以上所需文件都需要从网上下载下载一个SWFUpload组件的demo里面会包含我们所需的文件
当然Default新建项目会有,upload页面需要自己去添加
提醒下两个页面最好不要从下载的SWFUpload的demo中附加 那样应该不能实现功能
Default.aspx代码
<head runat="server">
<title></title>
<scriptsrc="js/swfupload.js"type="text/javascript"></script>
<script src="js/handlers.js" type="text/javascript"></script>
<script type="text/javascript">
var swfu;
window.onload = function() {
swfu = new SWFUpload({
// 后台设置
upload_url: "upload.aspx", // 文件上传的处理程序,就是说,你要在这个文件对上传这
个动作进行定义,比如文件保存、重命名之类的,
//如果这个没有具体动作的话,文件不会在服务器上有任何踪迹,即文件不会上传。
post_params: {
"ASPSESSID": "<%=Session.SessionID %>"
},
//文件上传设置
file_size_limit: "2 MB", //上传大小 单位M
file_types: "*.*", //上传文件类型
file_types_description: "所有文件类型", //文件类型描述
file_upload_limit: "0", //一次性上传文件个数 0表示没有限制
// 事件处理设置 - these functions as defined in Handlers.js
file_queue_error_handler: fileQueueError,
file_dialog_complete_handler: fileDialogComplete,
upload_progress_handler: uploadProgress,
upload_error_handler: uploadError,
upload_success_handler: uploadSuccess,
upload_complete_handler: uploadComplete,
//按钮设置
//这里注意查看自己按钮图片路径是否正确
button_image_url: "images/swfupload_uploadBtn.png",
button_placeholder_id: "spanButtonPlaceholder",
button_width: 200,
button_height: 22,
button_text: '<span class="button">Select File <span
class="buttonSmall">(2MB Max)</span></span>',
button_text_style: '.button { font-family: Helvetica, Arial, sans
-serif; font-size: 14pt; } .buttonSmall { font-size: 10pt; }',
button_text_top_padding: 1,
button_text_left_padding: 400,
// Flash 设置查看自己flash文件路径是否正确
flash_url: "../Flash/swfupload.swf", // Relative to this file
custom_settings: {
upload_target: "divFileProgressContainer"
},
// Debug Settings
debug: false
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="header">
<h1 id="logo"><a href="../">SWFUpload</a></h1>
<div id="version">v2.2.0</div>
</div>
<div id="content">
<div id="swfu_container" style="margin: 0px 10px;">
<div>
<span id="spanButtonPlaceholder"></span>
</div>
<div id="divFileProgressContainer" style="height: 75px;"></div>
</div>
</div>
</form>
</body>
</html>
后台文件不需要设置
下面设置upload.aspx.cs后台方法
protected void Page_Load(object sender, EventArgs e)
{
#region
try
{
// Get the data
HttpPostedFile jpeg_image_upload=Request.Files["Filedata"];
//获取上传文件后缀
string FileExtension= jpeg_image_upload.FileName.Substring
(jpeg_image_upload.FileName.LastIndexOf("."),
jpeg_image_upload.FileName.Length-
jpeg_image_upload.FileName.LastIndexOf("."));
//自定义文件名称
Random rd = new Random();
int num1 = rd.Next(1000, 9999);
string Filename= num1.ToString()+ FileExtension;
//文件上传路径 配置文件中设置 与FileUpload控件道理相同
string FileUploadPath = ConfigurationManager.AppSettings["FileUploadPath"];
//文件上传
jpeg_image_upload.SaveAs(FileUploadPath+Filename);
Response.StatusCode = 200;
Response.Write("文件处理完毕!");
}
catch
{
// If any kind of error occurs return a 500 Internal Server
error
Response.StatusCode = 500;
Response.Write("未知错误!");
}
finally
{
// Clean up
Response.End();
}
#endregion
}
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:feng0808的专栏面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢