|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。上传之前,经由过程ASP上传图像(图像的巨细、范例都遭到限定)一样平常都是要借助内部组件来完成,.NET的呈现,使这一事情变得十分简单而且能够任意的利用Bitmap和Image范例。
在这个引导头脑下,我将依照以下步骤(在你要上传图像文件上)创立一个复杂的WEB窗体,该窗体将判别上传的文件是不是是JPEG文件、判别该文件是不是存在(需要时你能够重定名)。
1、创立一个新Web使用程序项目;
2、翻开Web窗体;
3、在窗体下面增加一个HTML表单,并把它转换成服务器控件。在这个例子里,该文件将定名为filUpload;(把HTML转换成服务器控件的办法是,在它的下面右击鼠标然后选择RunAsServerControl)
4、切换到HTMLview并增加/变动FORM标签的enctype属性为multipart/form-data。如:enctype="multipart/form-data"。
5、在Web窗体上增加一个BUTTON并定名为btnUpload。
6、向Web使用程序增加一个foldercalled/images。
7、在窗体上增加一个WebFormImage并定名为imgPicture,设置宽度和高度分离为160和120。
8、增加一个Label控件并定名为lblOutput。显现当在上传的过程当中产生的任何毛病。
9、给按钮btnUpload的单击事务增加以下代码:(假如你想剖析以下代码的细节,你能够把上面的代码复制粘贴到VS.NETIDE集成开辟情况。)
1.privatevoidbtnUpload_Click(objectsender,System.EventArgse)
2.{
3.//Initializevariables
4.stringsSavePath;
5.stringsThumbExtension;
6.intintThumbWidth;
7.intintThumbHeight;
8.
9.//Setconstantvalues
10.sSavePath="images/";
11.sThumbExtension="_thumb";
12.intThumbWidth=160;
13.intThumbHeight=120;
14.
15.//Iffilefieldisn’tempty
16.if(filUpload.PostedFile!=null)
17.{
18.//Checkfilesize(mustn’tbe0)
19.HttpPostedFilemyFile=filUpload.PostedFile;
20.intnFileLen=myFile.ContentLength;
21.if(nFileLen==0)
22.{
23.lblOutput.Text="Nofilewasuploaded.";
24.return;
25.}
26.
27.//Checkfileextension(mustbeJPG)
28.if(System.IO.Path.GetExtension(myFile.FileName).ToLower()!=".jpg")
29.{
30.lblOutput.Text="ThefilemusthaveanextensionofJPG";
31.return;
32.}
33.
34.//Readfileintoadatastream
35.byte[]myData=newByte[nFileLen];
36.myFile.InputStream.Read(myData,0,nFileLen);
37.
38.//Makesureaduplicatefiledoesn’texist.Ifitdoes,keeponappendingan
39.//incrementalnumericuntilitisunique
40.stringsFilename=System.IO.Path.GetFileName(myFile.FileName);
41.intfile_append=0;
42.while(System.IO.File.Exists(Server.MapPath(sSavePath+sFilename)))
43.{
44.file_append++;
45.sFilename=System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
46.+file_append.ToString()+".jpg";
47.}
48.
49.//Savethestreamtodisk
50.System.IO.FileStreamnewFile
51.=newSystem.IO.FileStream(Server.MapPath(sSavePath+sFilename),
52.System.IO.FileMode.Create);
53.newFile.Write(myData,0,myData.Length);
54.newFile.Close();
55.
56.//CheckwhetherthefileisreallyaJPEGbyopeningit
57.System.Drawing.Image.GetThumbnailImageAbortmyCallBack=
58.newSystem.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
59.BitmapmyBitmap;
60.try
61.{
62.myBitmap=newBitmap(Server.MapPath(sSavePath+sFilename));
63.
64.//Ifjpgfileisajpeg,createathumbnailfilenamethatisunique.
65.file_append=0;
66.stringsThumbFile=System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)
67.+sThumbExtension+".jpg";
68.while(System.IO.File.Exists(Server.MapPath(sSavePath+sThumbFile)))
69.{
70.file_append++;
71.sThumbFile=System.IO.Path.GetFileNameWithoutExtension(myFile.FileName)+
72.file_append.ToString()+sThumbExtension+".jpg";
73.}
74.
75.//Savethumbnailandoutputitontothewebpage
76.System.Drawing.ImagemyThumbnail
77.=myBitmap.GetThumbnailImage(intThumbWidth,
78.intThumbHeight,myCallBack,IntPtr.Zero);
79.myThumbnail.Save(Server.MapPath(sSavePath+sThumbFile));
80.imgPicture.ImageUrl=sSavePath+sThumbFile;
81.
82.//Displayingsuccessinformation
83.lblOutput.Text="Fileuploadedsuccessfully!";
84.
85.//Destroyobjects
86.myThumbnail.Dispose();
87.myBitmap.Dispose();
88.}
89.catch(ArgumentExceptionerrArgument)
90.{
91.//Thefilewasntavalidjpgfile
92.lblOutput.Text="Thefilewasntavalidjpgfile.";
93.System.IO.File.Delete(Server.MapPath(sSavePath+sFilename));
94.}
95.}
96.}
97.
98.publicboolThumbnailCallback()
99.{
100.returnfalse;
}
10.运转以上创立的Web页(webpage),并分离利用JPG文件和其他范例的文件来测试毛病反省(error-checking)机制。
11.假如你有甚么成绩或倡议,请给作者留言。
-------------------------------------------------------------
关于ChrisKhoo
IwasborninMalaysiaon13thFebruary1982andmovedtoAustraliawhenIwas8.IalsostartedprogrammingaroundthattimeaswellinGWBasic.Overtheyears,IpickedupAssembly,Pascal,andC/C++.
Inmyteen/adultyearswhenWindowsprogrammingbecamethenorm,IalsolearntsomeMFC,VisualBasic,andJavaandhavecompletedsomewebprojectsutilizingASPandalsocreatedOfficeVBAmacrosforbusinesses.
Withinthistime,IpickedupaMCSDandMCSE,howeverIfinallychosetogotouniversityinsteadofworkingafulltimesoftwaredevelopmentjob.
Currently,atage20,IamstudyingCommerce(Accounting)andInformationTechnologyattheUniversityofQueensland,anditisablast.
Ienjoyworkingwithbusinessestohelpgrowtheminwhateverway(usuallyitinvolvesITinitially),challengingsoftware/webdevelopmentprojectsandlearningnewthingseveryday.(Imintothis.NETstuffnow).
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了) |
|