用最简单的语句写一个ASP上传图片代码 上传到一个指定文件夹里
- 格式:pdf
- 大小:243.00 KB
- 文档页数:13
使⽤上传图⽚汇总1 使⽤标准HTML来进⾏图⽚上传前台代码:<body><form id="form1" runat="server"><div><table><tr><td colspan="2" style="height: 21px">使⽤标准HTML来进⾏图⽚上传</td></tr><tr><td style="width: 400px"><input id="InputFile" style="width: 399px" type="file" runat="server"/></td><td style="width: 80px"><asp:Button ID="UploadButton" runat="server" Text="上传图⽚" OnClick="UploadButton_Click"/></td> </tr><tr><td colspan="2"><asp:Label ID="Lb_Info" runat="server" ForeColor="Red"></asp:Label></td></tr></table></div></form></body>后台代码:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void UploadButton_Click(object sender, EventArgs e){string uploadName = InputFile.Value;//获取待上传图⽚的完整路径,包括⽂件名//string uploadName = InputFile.PostedFile.FileName;string pictureName = "";//上传后的图⽚名,以当前时间为⽂件名,确保⽂件名没有重复if (InputFile.Value != ""){int idx = stIndexOf(".");string suffix = uploadName.Substring(idx);//获得上传的图⽚的后缀名pictureName = DateTime.Now.Ticks.ToString() + suffix;}try{if (uploadName != ""){string path = Server.MapPath("~/images/");InputFile.PostedFile.SaveAs(path + pictureName);}catch (Exception ex){Response.Write(ex);}}}2 单⽂件上传这是最基本的⽂件上传,在1.x中没有这个FileUpload控件,只有html的上传控件,那时候要把html控件转化为服务器控件,很不好⽤。
PHP上传图⽚基本代码⽰例⼀、HTML代码如下:<form name="form2" method="post" action="?type=add" enctype="multipart/form-data"><input type="file" name="file" id="cover" required/></form>⼆、PHP代码如下:if (($_GET["type"] == "edit") && $_POST) {//判断上传的⽂件是否出错,是的话,返回错误if($_FILES["file"]["error"]){echo$_FILES["file"]["error"];exit;}else{//没有出错//加限制条件//判断上传⽂件类型为png或jpg且⼤⼩不超过1024000Bif(($_FILES["file"]["type"]=="image/png"||$_FILES["file"]["type"]=="image/jpeg")&&$_FILES["file"]["size"]<1024000) {//防⽌⽂件名重复$path = "/upload/movie/".date('Y-m-d')."/".time().$_FILES["file"]["name"];$filename = $_SERVER['DOCUMENT_ROOT'].$path;//转码,把utf-8转成gb2312,返回转换后的字符串,或者在失败时返回 FALSE。
将图⽚上传到mysql数据库的⽅法这是页⾯上的按钮单击事件复制代码代码如下: protected void Button1_Click(object sender, EventArgs e) { string tid = Utils.getRandom(32); Stream mystream = this.FileUpload1.PostedFile.InputStream; int length = this.FileUpload1.PostedFile.ContentLength; byte[] pic = new byte[length]; mystream.Read(pic, 0, length); bool flg = insert(tid, pic); } 这是执⾏插⼊的⽅法复制代码代码如下: public bool insert(string tid,byte[] pic) { DBConn db = new DBConn(); StringBuilder sql = new StringBuilder(); sql.Append("insert into teacher(TID,TPHOTO,TDELETE) values (?tid,?pic,?flg)"); int flg = 0; try { myConnection = db.getConnection(); MySqlCommand myCommand = new MySqlCommand(sql.ToString(), myConnection); myCommand.Parameters.Add(new MySqlParameter("?tid", MySqlDbType.String, 32)); myCommand.Parameters["?tid"].Value = tid; myCommand.Parameters.Add(new MySqlParameter("?pic", MySqlDbType.Blob)); myCommand.Parameters["?pic"].Value = pic; myCommand.Parameters.Add(new MySqlParameter("?flg", MySqlDbType.Int16)); myCommand.Parameters["?flg"].Value = 0; myConnection.Open(); flg = myCommand.ExecuteNonQuery(); } catch (Exception ex) { return false; } finally { if (myConnection != null) { myConnection.Close(); } } if (flg > 0) { return true; } return false; }。
asp无组件上传文件所谓“无组件上传文件”,就是不使用第三方组件,直接上传文件。
它是非常复杂的,可是为什么本节还要花一定的篇幅讲解呢?原因有二:(1)如果使用别人的服务器,对方可能不允许你安装第三方组件,就必须使用无组件上传;(2)学习无组件上传,就可以对文件上传的原理有深刻了解,有助于大家理解AspUpload等组件到底是怎么工作的,甚至可以动手开发属于自己的文件上传组件。
要掌握无组件上传,其实最为重要的是学会分析客户端传上来的数据,为此将首先在此讲述无组件上传原理,随后会举一些综合示例。
1. 无组件上传原理细心的同学可能已经注意到,不管是用AspUpload组件还是LyfUpload组件,上传表单文件都是一样的。
这也就提醒我们,用户将文件提交到服务器端的时候都是一样的,区别就是服务器端得到数据后,用什么方法来分析得到其中的文件名称、文件大小、文件内容、文件说明等信息。
所谓无组件上传,就是要我们自己来手工获取这些信息。
下面就分步讲解:(1)剖析上传数据的格式要对上传的数据进行分析,就必须知道上传数据的格式。
其实在<form>标记中增加enctype="multipart/form-data"属性后,上传的数据是一个长长的二进制字符串,其中包括了文件浏览框的名称、文件的客户端路径、文件MIME类型、文件内容、文本框(文件说明)的名称、文本框的值等各种信息。
就好比是邮局送到学校来的一个大邮包,其中包含了信件、包裹、汇款单、报刊等各种东西,学校收发室就要将这些东西挑出来送给相应的人。
二进制字符串是无法直接显示在页面上的,如果非要直接显示,将会看到一堆乱码,但是我们可以将二进制字符串先转换为文本字符串,然后再显示到页面上。
以本示例为例,假如客户选择了文件“C:\temp.jpg”,并且填写了文件说明“我的照片”,提交后,将二进制字符串转换为文本字符串,结果如图所示:上传数据格式说明:①首先要强调,提交上来的数据是一个二进制数据,将来我们需要处理的也是二进制数据。
Asp头像上传本例使用的是艾恩无组件上传类。
演示效果如下:由于仅仅是个范例所以没有做太多的美化。
本例实现了上传头像更新显示,需要的朋友可以参考下需要三个文件,一个上传显示页面(pdup.asp),一个弹出上传页面(upload.asp)和一个类页面(UpLoad_Class.inc)。
pdup.asp以下是代码:<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><!--#include file="conn.asp"--><%'定义一个编辑变量Dim MM_editActionMM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))If (Request.QueryString <> "") ThenMM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)End If' boolean to abort record editDim MM_abortEditMM_abortEdit = false%><%If (CStr(Request("MM_insert")) = "upphoto") ThenIf (Not MM_abortEdit) ThenDim MM_editCmdSet MM_editCmd = Server.CreateObject ("mand")MM_editCmd.ActiveConnection = connMM_mandText = "INSERT INTO member (memb_name, memb_header) V ALUES (?, ?)"MM_editCmd.Prepared = trueMM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param1", 202, 1, 50, Request.Form("memb_name")) ' adVarWCharMM_editCmd.Parameters.Append MM_editCmd.CreateParameter("param2", 203, 1, 1073741823, Request.Form("memb_header")) ' adLongVarWCharMM_editCmd.ExecuteMM_editCmd.ActiveConnection.Close'完成更新记录操作重定向URLDim MM_editRedirectUrlMM_editRedirectUrl = "pdup.asp"If (Request.QueryString <> "") ThenIf (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0) ThenMM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryStringElseMM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryStringEnd IfEnd IfResponse.Redirect(MM_editRedirectUrl)End IfEnd If%><!—以上代码是DW生成的插入记录代码--><%set memb=server.createobject("ADODB.recordset")sql="SELECT * FROM member order by id desc"memb.Open sql,conn,1,3memb.pagesize=100 '每页记录数page=Cint(request("page"))if page < 1 then page=1if page > memb.pagecount then page=memb.pagecountmemb.absolutepage=page%><!—以上代码是显示记录的代码--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>头像上传</title><style>body {font-size:12px; font-family:Arial, Helvetica, sans-serif;}.myinfo{border:1px #ccc solid; margin:50px auto; width:300px; padding:10px;}</style><script type="text/javascript">/*---首页表单验证---*/function check_input() {if (document.upphoto.memb_name.value == '') {alert("请输入用户名!");document.upphoto.memb_name.focus();return false;}if (document.upphoto.memb_header.value == '') {alert("请上传头像!");document.upphoto.memb_header.focus();return false;}return true;}//这里是弹出窗口function showWindow(){window.open("upload.asp","","width=400,height=30");}</script><!----以上代码是判断表单></head><body><div class="myinfo"><form method="post" id="upphoto" name="upphoto" ACTION="<%=MM_editAction%>" onsubmit="return check_input();"><!—这里要写上name,因为在后面会传值--><input type="text" id="memb_name" name="memb_name" /><br /><img name="headview" src="files/0.jpg" width="100px" height="100px" /><input name="memb_header" type="hidden" id="memb_header" value="files/0.jpg" /><br /><input type="button" value ="上传头像" onclick="showWindow();" /><hr /><br /><input name="submit" type="submit" id="submit" value ="保存修改" /><input type="hidden" name="MM_insert" value="upphoto" /></form></div><!--<%for ipage=1 to memb.pagesize%>--><div class="cont" style="border:1px #ccc solid; padding:5px; margin:3px; float:left;"><img src="<%=memb("memb_header")%>" alt="<%=memb("memb_name")%>" title="<%=memb("memb_name")%>" width="50px" height="50px" /></div><!--<%memb.movenextif memb.EOF then exit fornext%>--></body></html>upload.asp代码开始:<!--#include file="upload_class.inc"--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" xml:lang="zh-cn" lang="zh-cn"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>示例结果</title><style type="text/css">TABLE {border:1px green solid;margin-top:5px;}TD{border-bottom:1px #dddddd solid;height:20px;padding:3px 0 0 5px;}.head{background-color:#eeeeee;}</style></head><body style="font-size:12px"><form name="upload" method="post" action="upload.asp?act=upload" enctype="multipart/form-data"><input type ="file" name ="file1" /> <input type ="submit" value="上传" /></form><%if request.QueryString("act")="upload" thenDim Upload,path,tempCls,fName'===================================================================== ==========set Upload=new AnUpLoad '创建类实例Upload.SingleSize=1024*1024*1024 '设置单个文件最大上传限制,按字节计;默认为不限制Upload.MaxSize=1024*1024*1024 '设置最大上传限制,按字节计;默认为不限制Upload.Exe="bmp|rar|pdf|jpg|gif" '设置合法扩展名,以|分割,忽略大小写Upload.Charset="gb2312" '设置文本编码,默认为gb2312 Upload.openProcesser=false '禁止进度条功能,如果启用,需配合客户端程序Upload.GetData() '获取并保存数据,必须调用本方法'===================================================================== ==========if Upload.ErrorID>0 then '判断错误号,如果myupload.Err<=0表示正常response.write Upload.Description '如果出现错误,获取错误描述elseif Upload.files(-1).count>0 then '这里判断你是否选择了文件path=server.mappath("files") '文件保存路径(这里是files文件夹)'保存文件(以新文件名保存)set tempCls=Upload.files("file1")tempCls.SaveToFile path,0fName=tempCls.FileNameset tempCls=nothingelseresponse.Write "您没有上传任何文件!"end ifend ifset Upload=nothing '销毁类实例%><script type ="text/javascript">window.opener.document.upphoto.memb_header.value='files/<%=fName%>';window.opener.document.upphoto.headview.src='files/<%=fName%>';window.opener =null;window.close();</script><-- 上面的这段js代码是把文件的值发送到前一页面的相应标签中格式是:document.表单是ID.标签的name名.value='files/<%=fName%>';如果是input表单就写value,如果是图片就写src,类推。
用ASP实现数据库中图片上传与存储
息冰梅
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2000(000)009
【摘要】在用ASP编程中,上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,很多情况下,我们只能使用免费的支持ASP的空间或者租用别人的虚拟空间,要付出不少的“银子”才可以。
除非你拥有自己的虚拟主机,就可以随便的在服务器上面安装自己所需要的组件,这种情况对于大多数人来说是可望而不可及的。
下面就让我们一起来使用纯ASP代码来实现图片的上传以及保存到数据库并实现显示数据库中的图片到网页上的功能。
【总页数】2页(P75-76)
【作者】息冰梅
【作者单位】无
【正文语种】中文
【中图分类】TP311.13
【相关文献】
1.用存储过程实现ASP对Web数据库的访问 [J], 葛磊;崔丹丹
2.基于实现图片存储数据库及页面读取研究与应用 [J], 刘正龙;罗玉军
3.基于实现图片存储数据库及页面读取研究与应用 [J], 刘正龙;罗玉军
4.ASP中如何将图片上传到数据库 [J], 李芳
5.ASP有组件图片上传到SQL Server数据库的实现 [J], 魏员秀;邓卫华
因版权原因,仅展示原文概要,查看原文内容请购买。
实现⽂件图⽚上传下载处理1.最简单的单⽂件上传(没花头)2.多⽂件上传3.客户端检查上传⽂件类型(以上传图⽚为例)4.服务器端检查上传⽂件类型(以上传图⽚为例)5.服务器端检查上传⽂件类型(可以检测真正⽂件名)6.上传⽂件⽂件名唯⼀性处理(时间戳+SessionID)7.上传图⽚⽣成等⽐例缩略图8.上传图⽚加⽔印(⽂字⽔印,图⽚⽔印,⽂字+图⽚⽔印)9.1.最简单的单⽂件上传(没花头)效果图:说明:这是最基本的⽂件上传,在1.x中没有这个FileUpload控件,只有html的上传控件,那时候要把html控件转化为服务器控件,很不好⽤。
其实所有⽂件上传的美丽效果都是从这个FileUpload控件衍⽣,第⼀个例⼦虽然简单却是根本。
后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void bt_upload_Click(object sender, EventArgs e){try{if (FileUpload1.PostedFile.FileName == ""){this.lb_info.Text = "请选择⽂件!";}else{string filepath = FileUpload1.PostedFile.FileName;string filename = filepath.Substring(stIndexOf("\\") + 1);string serverpath = Server.MapPath("images/") + filename;FileUpload1.PostedFile.SaveAs(serverpath);this.lb_info.Text = "上传成功!";}}catch (Exception ex){this.lb_info.Text = "上传发⽣错误!原因是:" + ex.ToString();}}}前台代码:<table style="width: 343px"><tr><td style="width: 100px">单⽂件上传</td><td style="width: 100px"></td></tr><tr><td style="width: 100px"><asp:FileUpload ID="FileUpload1" runat="server" Width="475px" /></td><td style="width: 100px"><asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="上传" /></td></tr><tr><td style="width: 100px; height: 21px;"><asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="183px"></asp:Label></td></td></tr></table>2.多⽂件上传效果图:后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void bt_upload_Click(object sender, EventArgs e){if ((FileUpload1.PostedFile.FileName == "" && FileUpload2.PostedFile.FileName == "")&&FileUpload3.PostedFile.FileName == "") {this.lb_info.Text = "请选择⽂件!";}else{HttpFileCollection myfiles = Request.Files;for (int i = 0; i < myfiles.Count; i++){HttpPostedFile mypost = myfiles[i];try{if (mypost.ContentLength > 0){string filepath = mypost.FileName;string filename = filepath.Substring(stIndexOf("\\") + 1);string serverpath = Server.MapPath("images/") + filename;mypost.SaveAs(serverpath);this.lb_info.Text = "上传成功!";}}catch (Exception error){this.lb_info.Text = "上传发⽣错误!原因:" + error.ToString();}}}}}前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""><html xmlns="" ><head runat="server"><title>多⽂件上传清清⽉⼉/21aspnet/</title></head><body><form id="form1" runat="server"><div><table style="width: 343px"><tr><td style="width: 100px">多⽂件上传</td><td style="width: 100px"></tr><tr><td style="width: 100px"><asp:FileUpload ID="FileUpload1" runat="server" Width="475px" /></td><td style="width: 100px"></td></tr><tr><td style="width: 100px"><asp:FileUpload ID="FileUpload2" runat="server" Width="475px" /></td><td style="width: 100px"></td></tr><tr><td style="width: 100px"><asp:FileUpload ID="FileUpload3" runat="server" Width="475px" /></td><td style="width: 100px"></td></tr><tr><td style="width: 100px"><asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="⼀起上传" /> <asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="183px"></asp:Label></td> <td style="width: 100px"></td></tr></table></div></form></body></html>3.客户端检查上传⽂件类型(以上传图⽚为例)效果图:后台代码和1.最简单的单⽂件上传⼀样;前台代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""><html xmlns="" ><head runat="server"><title>清清⽉⼉ ><script language="javascript">function Check_FileType(){var str=document.getElementById("FileUpload1").value;var pos = stIndexOf(".");var lastname = str.substring(pos,str.length)if (lastname.toLowerCase()!=".jpg" && lastname.toLowerCase()!=".gif"){alert("您上传的⽂件类型为"+lastname+",图⽚必须为.jpg,.gif类型");return false;}else{return true;}}</script></head><body><form id="form1" runat="server"><div><table style="width: 343px"><tr><td style="width: 104px">⽂件上传判断</td><td style="width: 100px"></td><td style="width: 104px"><asp:FileUpload ID="FileUpload1" runat="server" Width="400px" /></td><td style="width: 100px"><asp:Button ID="bt_upload" runat="server" OnClick="bt_upload_Click" Text="上传" OnClientClick="return Check_FileType()"/></td> </tr><tr><td style="width: 104px; height: 21px;"><asp:Label ID="lb_info" runat="server" ForeColor="Red" Width="183px"></asp:Label></td><td style="width: 100px; height: 21px"></td></tr></table></div></form></body></html>说明:点击上传时先触发客户端事件Check_FileType;4.服务器端检查上传⽂件类型(以上传图⽚为例)效果图:后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void bt_upload_Click(object sender, EventArgs e){try{if (FileUpload1.PostedFile.FileName == ""){this.lb_info.Text = "请选择⽂件!";}else{string filepath = FileUpload1.PostedFile.FileName;if (IsAllowedExtension(FileUpload1) == true){string filename = filepath.Substring(stIndexOf("\\") + 1);string serverpath = Server.MapPath("images/") + filename;FileUpload1.PostedFile.SaveAs(serverpath);this.lb_info.Text = "上传成功!";}else{this.lb_info.Text = "请上传图⽚";}}}catch (Exception error){this.lb_info.Text = "上传发⽣错误!原因:" + error.ToString();}}public static bool IsAllowedExtension(FileUpload hifile){string strOldFilePath = "", strExtension = "";string[] arrExtension = { ".gif", ".jpg", ".jpeg", ".bmp", ".png" };if (hifile.PostedFile.FileName != string.Empty){strOldFilePath = hifile.PostedFile.FileName;strExtension = strOldFilePath.Substring(stIndexOf("."));for (int i = 0; i < arrExtension.Length; i++){return true;}}}return false;}}5.服务器端检查上传⽂件类型(可以检测真正⽂件名)其实⽅法4并不好,因为⽤户可以把XXX.txt伪装为XXX.jpg。
活用ASP把图片上传到数据库
胡艳维
【期刊名称】《萍乡高等专科学校学报》
【年(卷),期】2003(000)004
【摘要】@@ ASP(Active Server Pages)是Microsoft很早就推出的一种WEB 应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件.
【总页数】2页(P102-103)
【作者】胡艳维
【作者单位】萍乡高等专科学校,江西,萍乡,337000
【正文语种】中文
【中图分类】TP3
【相关文献】
1.ASP图片上传到图片服务器的研究 [J], 汪勤
2.用ASP实现数据库中图片上传与存储 [J], 息冰梅
3.基于和Oracle数据库的图片上传和查看 [J], 颜波;孙宏波;杨融菲;肖田元
4.ASP中如何将图片上传到数据库 [J], 李芳
5.ASP有组件图片上传到SQL Server数据库的实现 [J], 魏员秀;邓卫华
因版权原因,仅展示原文概要,查看原文内容请购买。
ASP实现⽂件上传的⽅法⼀.基于ASP的⽂件上传实现原理分析基本原理是:采⽤ADO Stream对象的BinaryRead⽅法将FORM中的所有数据读出,从中截取出所需的⽂件数据,以⼆进制⽂件⽅式存盘。
下⾯是上传⽂件页⾯的⼀个例⼦(upload.htm):<html><body><form name="Upload" Method="Post" Enctype="multipart/form-data" Action="Upload.asp"><input type="file" name="FileName"><INPUT TYPE="Submit" VALUE="Upload"></TD></form></body></html>程序中使⽤了⽂件对象,这样在Upload.asp中采⽤BinaryRead⽅法读来的原始数据就不仅仅是选择的⽂件本⾝的数据,还包含该⽂件在⽤户硬盘上的路径、类型、提交页⾯的表单域名等相关信息的描述,这样我们就需从中提取出⽂件的具体内容。
根据分析,数据的头部信息与数据的分界线是两对回车换⾏符,尾部也有分隔信息,我们可以采⽤类似以下的⽅法获取⽂件数据。
Dim FormData.FormSize,DataStart,CLStr,DivStrFormSize=Request.TotalBytesFormData=Request.BinaryRead(FormSize)CLStr=ChrB(13)&ChrB(10)DataStart=InStrB(FormData.CLStr&CLStr)+4'4是两对回车换⾏符的长度DivStr=LeftB(FormData,InStrB(FormData,CLStr)-1)DataSize=InStrB(DataStart+1,FormData,DivStr)-DataStart-2FormData=MidB(FormData,DataStart,DataSize)FormData就是⽂件的内容了。
(C#)上传下载及文件管理代码实例如下:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){//初始化文件夹信息InitFolderInfo();//初始化上传限制信息InitUploadLimit();//初始化列表框控件文件列表信息InitFileList();}}#region 初始化文件夹信息private void InitFolderInfo(){//从config中读取文件上传路径string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();//如果上传文件夹不存在,则根据config创建一个if(!Directory.Exists(Server.MapPath(strFileUpladPath))){Directory.CreateDirectory(Server.MapPath(strFileUpladPath));}//将虚拟路径转换为物理路径string strFilePath = Server.MapPath(strFileUpladPath);//从config里读取文件夹容量限制double iFolderSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FolderSizeLimit"]);//声明文件夹已经使用的容量double iFolderCurrentSize = 0;//获取文件夹中的所有文件FileInfo[] arrFiles = new DirectoryInfo(strFilePath).GetFiles();//循环文件获已经使用的容量foreach (FileInfo fi in arrFiles){iFolderCurrentSize += Convert.ToInt32(fi.Length / 1024);}#region 第二种获得文件夹使用大小的方法//DirectoryInfo dir = new DirectoryInfo(strFilePath);//foreach (FileSystemInfo fi in dir.GetFileSystemInfos())//{// FileInfo finf = new FileInfo(fi.FullName);// iFolderCurrentSize += Convert.ToInt32(finf.Length / 1024);//}#endregion//把文件夹容量和以用文件夹容量赋值给标签lbl_FolderInfo.Text = string.Format("文件夹容量限制:{0}M,已用容量:{1}KB", iFolderSizeLimit / 1024, iFolderCurrentSize);}#endregion#region 初始化上传限制信息private void InitUploadLimit(){//从config中读取上传文件夹类型限制并根据逗号分割成字符串数组string[] arrFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString().Split(',');//从config中读取上传文件大小限制double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]);//遍历字符串数组把所有项加入项目编号控件for (int i = 0; i < arrFileTypeLimit.Length; i++){bl_TileTypeLimit.Items.Add(arrFileTypeLimit[i].ToString());}//把文件大小限制赋值给标签lab_FileSizeLimit.Text = string.Format("{0:f2}M", iFileSizeLimit / 1024);}#endregion#region 初始化列表框控件文件列表信息private void InitFileList(){//从config中获取文件上传路径string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();//将虚拟路径转换为物理路径string strFilePath = Server.MapPath(strFileUpladPath);//读取上传文件夹下所有文件FileInfo[] arrFile = new DirectoryInfo(strFilePath).GetFiles();//把文件名逐一添加到列表框控件foreach(FileInfo fi in arrFile){lb_FileList.Items.Add();}}#endregion#region 判断文件大小限制private bool IsAllowableFileSize(){//从web.config读取判断文件大小的限制double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]) * 1024;//判断文件是否超出了限制if (iFileSizeLimit > FileUpload.PostedFile.ContentLength){return true;}else{return false;}}#endregion#region 判断文件类型限制protected bool IsAllowableFileType(){//从web.config读取判断文件类型限制string strFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString();//当前文件扩展名是否包含在这个字符串中if(strFileTypeLimit.IndexOf(Path.GetExtension(FileUpload.FileName).ToLower()) >0)return true;elsereturn false;}#endregion#region 弹出警告消息protected void ShowMessageBox(string strMessage){Response.Write(string.Format("<script>alert('{0}')</script>",strMessage));}#endregion#region 上传文件按钮事件protected void btn_Upload_Click(object sender, EventArgs e){//判断用户是否选择了文件if (FileUpload.HasFile){//调用自定义方法判断文件类型否符合if (IsAllowableFileType()){//判断文件大小是否符合if (IsAllowableFileSize()){//从web.config中读取上传路径string strFileUploadPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString(); //从UploadFile控件中读取文件名string strFileName = FileUpload.FileName;//组合成物理路径string strFilePhysicalPath = Server.MapPath(strFileUploadPath + "/") + strFileName;//判断文件是否存在if(!File.Exists(strFilePhysicalPath)){//保存文件FileUpload.SaveAs(strFilePhysicalPath);//更新列表框lb_FileList.Items.Add(strFileName);//更新文件夹信息InitFolderInfo();ShowMessageBox("上传成功!");}else{ShowMessageBox("文件已经存在!");}}else{ShowMessageBox("文件大小不符合要求!");}}else{ShowMessageBox("类型不匹配");}}}#endregion。
文件上传控件2010一.接收上传文件(1) FileUpLoad控件:说明:用于用户向Web应用程序上传文件.相关属性和方法HttpPostFile类相关属性和方法(2) 把文件保存到文件系统原理:用SaveAs方法把文件上传到指定的地方案例:上传文件到服务器上某一个位置,并且把该目录下面的所有图片显示出来代码protected void btUp_Click(object sender, EventArgs e){if (fileUp.HasFile)//判断是否有文件{Literal lt = new Literal();//定义一个Literal用来显示脚本if (CheckFileType(fileUp.FileName))//检查上传文件的类型{string filePath = "~/file/" + fileUp.FileName;fileUp.SaveAs(MapPath(filePath));//把文件上传到服务器的绝对路径上lt.Text = "<script>alert('文件上传成功!~')</script>";}else{lt.Text = "<script>alert('文件类型不正确!~')</script>";}this.Controls.Add(lt);}}//用来获取文件类型public bool CheckFileType(string fileName){//获取文件的扩展名,前提要用这个方法必须引入命名空间io string ext = Path.GetExtension(fileName);switch (ext.ToLower()){case".gif":return true;case".png":return true;case".jpeg":return true;case"jpg":return true;default:return false;}}注意事项:为了使文件能上传到服务器,页面关联的Window账户必须有足够的权限来保存文件,设置权限的方法,在要上传的目录中点击右键—选择安全----为NETWORK SERVICE或账户提供该文件夹的写权限把上传的文件显示到DataList中string upPath = MapPath("~/file/");DirectoryInfo dir = new DirectoryInfo(upPath);DataList1.DataSource = dir.GetFiles();DataList1.DataBind();(3) 把文件保存到数据库优缺点:优点:可以避免文件系统权限问题,其次把文件保存在数据库中能更方便地备份信息缺点:在数据库中保存和检索文件会给服务器端增加压力原理:利用FileUpLoad控件的FileBytes属性来获取字节数组数据表格设计:事例:将文件上传到数据库中 代码protected void btUp_Click(object sender, EventArgs e) {if (fileUp.HasFile) {string strCon = "server=.;database=test;uid=sa;pwd=";SqlConnection sqlcon = new SqlConnection(strCon);sqlcon.Open();SqlCommand sqlcom = new SqlCommand();sqlcom.Connection = sqlcon;mandText = "insert into [File] values(@FileName,@FileLength,@FileFiter,@ FileBytes)";sqlcom.Parameters.Add("@FileName", SqlDbType.VarChar).Value = fileUp.FileName;sqlcom.Parameters.Add("@FileLength", SqlDbType.Int).Value = fileUp.FileBytes.Length;sqlcom.Parameters.Add("@FileFiter", SqlDbType.VarChar).Value = Path.GetExtension(fi leUp.FileName);sqlcom.Parameters.Add("@FileBytes", SqlDbType.Image).Value = fileUp.FileBytes;sqlcom.ExecuteNonQuery();sqlcon.Close();}}(4) 上传大文件说明:中默认是不能提交大于4MB的表单,如果超过这个这个值就会报异常,解决方法需要配置web.config文件maxRequestLength文件上传的最大字节数,以kb为单位requestLengthDiskThreshold文件上传时缓存的大小executionTimeout文件上传的最大时间以秒为单位(5) 总结(1) System.IO.GetExtension()提取指定路径的扩展名(2) MapPath()获取指定虚拟路径对应的服务器物理路径(3) 为了防止文件名字相同,我们一般用上传的当前时间为文件名。
ASP网页上文件的上传和下载实现摘要:在软件开发平台VS2012中进行软件开发, 通过用JS和C#语言对Web前端和后端的网页进行代码的编写开发, 使需要上传和下载的文件通过打开的Web网页进行本地的上传和客户端的下载, 从而达到设计应用的目的。
对Web前端和后端文件上传和下载技术进行了重点阐述, 把这个实现的过程详尽地展示出来。
关键词:编程环境; Web前端和后端; 本地的上传; 客户端的下载;Web客户端页面对文件的上传或者下载操作是开发过程中经常会用到的一项技术。
这项技术可以给用户带来非常方便的文件操作, 可以直接在网页上进行文件的上传或者下载。
通过Web网页上传或者下载的文件一般为除文件夹以外的其他文件, 例如压缩文件、Word文档、Excel文件、EXE应用文件等等。
所以在文件进行上传时, 要先对文件进行前期的处理, 使之成为可以上传的非文件夹文件。
经过处理后的文件才可以进行上传, 否则进行上传的文件将无法进行上传。
文件的下载是将处理好的非文件夹文件放置在一个指定的文件夹内, 通过Web页面显示出来, 点击打开链接然后进行文件的下载和保存。
1、文件的上传1.1 、文件上传实现过程在VS2012软件开发平台中, 首先要对需要上传的文件进行Web页面的控件选择, VS2012自带的文件上传控件为FileUpload, 选择此控件后, 还需要再添加一个Button按钮, 用来激活所选择需要上传的文件, 使这些控件置于WebForm页面上后进行控件的布局, 布局完成后, 再进行代码的编写。
图1 多文件上传设计图上传文件选择时, 控件FileUpload对文件的选择对话框, 会提示包括非文件夹以外的文件, 选择好需要上传的文件后, 控件会把所选择的文件名称及类型显示在页面上。
点击"文件上传";按钮, 就会把所选择的上传文件上传至服务器所在的指定文件夹里, 文件上传功能就实现了。
图片上传预览及无刷新上传JS代码如下://清空File控件的值,并且预览处显示默认的图片function clearFileInput(){var form = document.createElement('form');document.body.appendChild(form);//记住file在旧表单中的的位置var file = document.getElementById("idFile");var pos = file.nextSibling;form.appendChild(file);form.reset();//通过reset来清空File控件的值document.getElementById("colspan").appendChild(file);document.body.removeChild(form);//在预览处显示图片这是在浏览器支持滤镜的情况使用的document.getElementById("idImg").style.filter ="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='images/abshiu.jpg'";//这是是火狐里面显示默认图片的if (erAgent.indexOf('Firefox') >= 0){$("#idImg").attr('src', 'images/abshiu.jpg');}}HTML代码如下:<table border="0" class="perview"><tr><th width="45%">选择文件</th><th width="45%">预览图</th><th width="10%">上传图片</th></tr><tr><td><span id="colspan"><input id="idFile" runat="server" name="pic" type="file"/></span> <input type="button" id="resets" name="resets" value="还原"onclick="clearFileInput()"/></td><td align="center"><img id="idImg" src="images/abshiu.jpg"/></td><td><input type="button" name="resets" value="上传保存图片" onclick="upLoadFile()"/></td></tr></table><script>var ip = new ImagePreview($$("idFile"), $$("idImg"), {maxWidth: 200, maxHeight: 200, action: "ImagePreview.ashx"});ip.img.src = ImagePreview.TRANSPARENT;ip.file.onchange = function() { ip.preview(); };</script>做到这里的话预览效果就已经搞定啦,然后就是无刷新上传,虽然cloudgamer的博客里面有简便无刷新文件上传系统,但是我没有采用,而是使用了jquery.form.js来做无刷新上传效果,代码如下:function upLoadFile()var options = {type: "POST",url: 'Files.ashx',success: showResponse};// 将options传给ajaxForm$('#myForm').ajaxSubmit(options);}function showResponse(){alert("上传成功!");}关于jquery.form.js的API,百度下吧。
,C#,FileUpload控件⽂件上传简单实例,vs2010⽂件上传是最常⽤的B/S项⽬功能,在FileUpload控件出来之前只能使⽤html控件的File控件,这样在form中就需要加⼊【 enctype="multipart/form-data"】。
FileUpload出来后就不需要了,form就不需要做上⾯的更改了。
实例如下,up1.aspx代码<%@ Page Language="C#" AutoEventWireup="true" CodeFile="up1.aspx.cs" Inherits="up1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title></title><script type="text/javascript">function checkform() {var strs = document.getElementById("FileUpload1").value;if (strs == "") {alert("请选择要上传的图⽚!");return false;}var n1 = stIndexOf('.') + 1;var fileExt = strs.substring(n1, n1 + 3).toLowerCase()if (fileExt != "jpg" && fileExt != "bmp" && fileExt != "png") {alert('⽬前系统仅⽀持jpg、bmp、png后缀图⽚上传!');return false;}}</script></head><body><form id="form1" runat="server"><asp:FileUpload ID="FileUpload1" runat="server" Width="220px"/><asp:Button ID="Button1" runat="server" CssClass="button" OnClick="Button1_Click"Text="上传"/></form></body></html>up1.aspx.cs代码using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.IO;public partial class up1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Button1.Attributes["onclick"] = "return checkform();";}protected void Button1_Click(object sender, EventArgs e){if (FileUpload1.HasFile){string upPath = "/up/"; //上传⽂件路径int upLength = 5; //上传⽂件⼤⼩string upFileType = "|image/bmp|image/x-png|image/pjpeg|image/gif|image/png|image/jpeg|";string fileContentType = FileUpload1.PostedFile.ContentType; //⽂件类型if (upFileType.IndexOf(fileContentType.ToLower()) > 0){string name = FileUpload1.PostedFile.FileName; // 客户端⽂件路径FileInfo file = new FileInfo(name);string fileName = DateTime.Now.ToString("yyyyMMddhhmmssfff") + file.Extension; // ⽂件名称,当前时间(yyyyMMddhhmmssfff)string webFilePath = Server.MapPath(upPath) + fileName; // 服务器端⽂件路径string FilePath = upPath + fileName; //页⾯中使⽤的路径if (!File.Exists(webFilePath)){if ((FileUpload1.FileBytes.Length / (1024 * 1024)) > upLength){ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('⼤⼩超出 " + upLength + " M的限制,请处理后再上传!');", true);return;}try{FileUpload1.SaveAs(webFilePath); // 使⽤ SaveAs ⽅法保存⽂件ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提⽰:⽂件上传成功');", true);}catch (Exception ex){ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提⽰:⽂件上传失败" + ex.Message + "');", true);}}else{ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提⽰:⽂件已经存在,请重命名后上传');", true);}}else{ClientScript.RegisterStartupScript(this.GetType(), "upfileOK", "alert('提⽰:⽂件类型不符" + fileContentType + "');", true);}}}}。
下面是ASP无组件上传图片的一个例子:<html><head><title>文件上传</title></head><body><form enctype="multipart/form-data" action="upload.asp" method="post">请选择要上传的文件: <br><input name="picture" type=file accept="image/*"><br><input type=submit value="上传"></form></body></html>当html文件在Netscape Navigator(3.0以上版本)或Internet Explorer(4.0以上版本)下显示时,“浏览”键旁边会出现一个看上去很普通的文本框。
用户可直接将文件名键入文本框,或用“浏览”键从文件对话框中选择一个文件。
提交该表单时,用户所选文件被同时提交。
<form>标签的enctype特征规定了请求表单信息的编码类型。
表单信息一般采用URL编码制。
不过上传文件时,必须用enctype="multipart/form-data"特征。
实际的文件上载键用下面的标签创建:<input name="picture" type=file accept="image/*">因为type的特征值是file,所以浏览器会创建一个文件上载键。
accept特征限制了在文件对话框中出现的特定文件,这种情况下文件类型限制为图文件。