يقبل ASPX ملف صفحة ASPX بسيطة للغاية ، ما عليك سوى استخدام htmlinputfile ، فهذا أمر جيد ، ولكن إذا قبلت ملف نشر صفحة HTML
ليس من السهل للغاية التعامل مع طريقة ASP على النحو التالي.
محتوى الملف ، النوع ، الحجم ، موضع التخزين المخصص ، في conmfig.xml
محتوى صفحة HTML: (من FCKEditor)
<html>
<head>
<title> اختبارات fckeditor -Uploaders </title>
<script language = "javaScript">
وظيفة sendfile ()
{{
var suploaderurl = cmbuploaderurl.value ؛
if (suploaderurl.length == 0)
suploaderurl = txtcustomall.value ؛
if (suploaderurl.length == 0)
{{
تنبيه ("يرجى تقديم عنوان URL المخصص الخاص بك أو تحديد عرض افتراضي") ؛
يعود؛
}
eurl.innerhtml = suploaderurl ؛
txturl.value = '' ؛
frmupload.action = suploaderurl ؛
frmupload.submit () ؛
}
وظيفة onuploadcompleted (Errornumber ، fileurl ، filename ، custmssg)
{{
التبديل (Errornumber)
{{
الحالة 0: // لا أخطاء
txturl.value = fileurl ؛
التنبيه ("ملف تم تحميله بدون خطأ") ؛
استراحة؛
الحالة 1: // خطأ مخصص
تنبيه (CUSTMSSG) ؛
استراحة؛
الحالة 10: // تحذير مخصص
txturl.value = fileurl ؛
تنبيه (CUSTMSSG) ؛
استراحة؛
القضية 201:
txturl.value = fileurl ؛
ALERT ('ملف يحمل نفس الاسم متاح Almedy. تم إعادة تسمية ملف التحميل إلى "' + filename + '"') ؛
استراحة؛
الحالة 202:
تنبيه ('ملف غير صالح') ؛
استراحة؛
القضية 203:
ALERT ("خطأ في الأمان. ربما لم تكن ليست ليست كافية الأذونات للتحميل. يرجى التحقق من الخادم الخاص بك.") ؛
استراحة؛
تقصير:
ALERT ('خطأ في تحميل الملف. إريك رقم:' + errornumber) ؛
استراحة؛
}
}
</script>
</head>
<body>
<table cellspacing = "0" cellpadding = "0">
<tr>
<td>
<table cellspacing = "0" cellpadding = "0">
<tr>
<td now4>
حدد "تحميل الملف" لاستخدامه: <br>
<حدد ID = "cmbuploaderurl" name = "select1">
<الخيار حدد value = "asp/upload.asp"> asp </soph>
<value Option = "php/upload.php"> php </soph>
<value Option = "Topload.aspx؟ type = image"> aspx </soph>
</select>
</td>
<td now44 & nbsp ؛
<td>
عنوان URL للتحميل المخصص: <br>
<input id = "txtcustomall" type = "text">
</td>
</r>
</table>
<br>
<table cellspacing = "0" cellpadding = "0">
<tr>
<td now4>
<form id = "frmupload" target = "uploadwindow" enctype = "multipart/form-data" action = "" method = "post"
تحميل ملف جديد: <br>
<إدخال type = "file" name = "newFile"> <br>
<type type = "button" value = "أرسلها إلى الخادم">
</form>
</td>
<td> & nbsp ؛
<td value = "top">
عنوان URL للملف الذي تم تحميله: <br>
<input id = "txturl" readonly type = "text">
</td>
</r>
</table>
<br>
Post url: <span id = "EURL"> & nbsp ؛
</td>
</r>
<tr>
<td>
<ifme name = "uploadwindow"> </frame>
</td>
</r>
</table>
</body>
</html>
محتوى expload.aspx:
أقل
فيما يلي رمز الخلفية:
باستخدام النظام ؛
باستخدام System.Data ؛
باستخدام System.Configuration ؛
باستخدام System.Collections ؛
باستخدام System.io ؛
باستخدام system.text ؛
باستخدام system.web ؛
باستخدام System.Web.Security ؛
باستخدام system.web.ui ؛
باستخدام system.web.ui.webControls ؛
باستخدام system.web.ui.webcontrols.webparts ؛
باستخدام system.web.ui.htmlcontrols ؛
باستخدام system.xml ؛
باستخدام System.Collections.speciped ؛
تحميل الفئة الجزئية العامة: system.web.ui.page
{{
SendResults public void (Int Errornumber ، سلسلة fileurl ، اسم ملف السلسلة ، سلسلة custommsg)
{{
text stringBuilder = new StringBuilder () ؛
text.append ("<script type =/" text/javaScript/">">) ؛
text.append ("window.parent.onuploadcompleted (" + errorrnumber + "،/" + fileurl.replace ("/" ، "//") ،/" + fileName.replace ("/"" ، "//" /"") + "/" ،/" + custommsg.replace ("/"" ، "//")) ؛/n ") ؛/n") ؛/n ") ؛/n") ؛/ n ") ؛/n") ؛/n ") ؛/n") ؛/n ") ؛
text.append ("</script>") ؛
استجابة. write (text.toString ()) ؛
استجابة.
}
public void getfig (نوع السلسلة ، السلسلة المسموح بها [] المسموح بها ، out string [] denyedext ، out long maxsize) ، Out Long MaxSize)
{{
xmldocumet doc = new xmldocument () ؛
doc.load (server.mappath (@"./ config.xml") ؛
xmlement root = doc.documentElement ؛
xmlnodelist imageExodelist = root.getElementsByTagName (type) ؛
المسموح به = ImageNodelist [0] .firstchild.innertext.trim ().
denyedext = ImageNodelist [0] .lastchild.innertext.trim ().
SavePath = root.getElementsbyTagname ("userpath").
يحاول
{{
maxSize = convert.toint64 (root.getElementsByTagname ("maxSize"). البند (0) .innertext.trim ()) ؛) ؛) ؛) ؛) ؛) ؛) ؛ ؛) ؛) ؛) ؛) ؛
}
catch {maxSize = 10*1024 ؛}
}
page page_load محمي (مرسل الكائن ، EventArgs E)
{{
String [] المسموح به = سلسلة جديدة [] {} ، denyedext = new string [] {} ؛
String SavePath = String.Empty ؛
MaxSize طويل = 10000 ؛
نوع السلسلة = request.querystring ["type"] ؛
إذا (اكتب! = null && type! = string.empty)
النوع = type.toLower () ؛
آخر
اكتب = "ملف" ؛
إذا (اكتب == "صورة")
{{
GetConfig ("Image" ، Out Outext ، Out Denyedext ، Out SavePath ، Out MaxSize) ؛
}
إذا (اكتب == "ملف")
{{
GetConfig ("ملف" ، مسموح به ، خارج Deenyedext ، Out SavePath ، Out MaxSize) ؛
}
إذا (اكتب == "فلاش"))
{{
GetConfig ("Flash" ، Out Outext ، Out Denyedext ، Out SavePath ، Out MaxSize) ؛
}
Ifpath == string.empty || SavePath == ""
SavePath = "~/userfiles/" ؛
if (! savePath.endswith ("/") SavePath+= "/" ؛
/*********************************************** ** ***************************************
byte [] bytes1 = system.text.encoding.default.getbytes ("هذه سلسلة/n/n/n/n") ؛
byte [] bytes2 = new byte [] {1 ، 33 ، 23 ، 3 ، 0 ، 56 ، 55 ، 235 ، 5} ؛
byte [] bytes = new byte [bytes1.length + bytes2.length] ؛
// دمج تيار ثنائي
MemoryStream MS = New MemoryStream (Bytes) ؛
Ms.Write (bytes1 ، 0 ، bytes1.length) ؛
Ms.Write (bytes2 ، 0 ، bytes2.length) ؛
int count = 0 ، pos = 0 ؛
// ابدأ العثور على أربعة '/n'
لـ (int i = 0 ؛ i <bytes.length ؛ i ++)
{{
if (bytes [i] == (int) '/n')
{{
count ++ ؛
إذا (العد == 4)
{{
pos- = 4 ؛
استراحة؛
}
}
}
إذا (العد == 4)
{{
// هنا ، الموضع من 0 إلى نقاط البيع في صفيف بايت بايت هو السلسلة التي تريدها
// من بداية POS + 5 إلى النهاية ، الثنائي الذي تريده
}
********************************************** ******************************************
بايت [] filedata ، formdata ؛
formData = request.binaryRead (request.contentLength) ؛
string head = string.empty ؛
ترميز الترميز = encoding.Utf8 ؛
نقاط البيع طويلة = 0 ؛
لـ (long i = 0 ؛ i <formdata.longlength ؛ i ++)
{{
if (formData [i] == (byte) '/r' && formData [i + 1] == (byte) '/n' && formData [i + 2] == (byte) '/r' && formData [i + 3] == (بايت) '/n')
{{
pos = i ؛
استراحة؛
}
}
if (pos == 0) {response.end () ؛
head = encoding.getString (formData ، 0 ، (int) pos) ؛
filedata = new byte [formData.Longlength -POS -3] ؛
Array.copy (formdata ، pos + 4 ، filedata ، 0 ، formdata.longlength -pos -4) ؛
/*********************************************** ************************************************ ***
// يأتي شكل النموذج هو:
// "--------------------------- 7D5FA3820F84/R/NCONTENT-DISPOSIS ".
// لاحقًا هي بيانات الملف
********************************************** ****************************************************** *********
Head = head.toLower () ؛
head = head.remove (0 ، head.indexof ("/r/n") ؛
head = head.replace ("/" "،" ") ؛
سلسلة postFilename = string.empty ؛
اسم الملف
سلسلة fileType ، filext ؛
postfilename = head.substring (0 ، head.indexof ("/r/n") ؛ // disposition: form-data ؛ name =/"newFile/" ؛ 4 (10995) .jpg/"
filetype = head.remove (0 ، postfilename.length + 3) ؛
postfilename = postfilename.substring (postfilename.indexof ("filename =") + "filename =". length) ؛
filename = path.getFilename (postfilename) ؛
filext = filename.substring (filename.lastindexof (".") + 1 ؛
ifdata.longlength> maxSize {{
SendResults (2 ، ResolveUrl (SavePath + Filename) ، اسم الملف ، "كبير جدًا") ؛
يعود؛
}
Bool isallow = false ؛
foreach (سلسلة ext في denyedext) {
if (ext == filext) {
isallow = false ؛
SendResults (202 ، ResolveUrl (SavePath + Filename) ، اسم الملف ، "Lovbiden") ؛
يعود؛
}
}
foreach (سلسلة ext في السماح) {{
if (ext == filext) {isally = reust ؛
}
إذا (isallow)
{{
String tmppath = server.mappath (SavePath) ؛
if (! directory.exists (tmppath)) {{
يحاول
{{
دليل. createdirectory (tmppath) ؛
}
catch {sendResults (200 ، solveUrl (SavePath + Filename) ، اسم الملف ، "لا أذونات الكتابة") ؛}
}
//response.binarywrite (filedata) ؛
fileStream SaveFilestream = new filestream (tmppath+filename ، filemode.openorcreate ، fileAccess.ReadWrite) ؛
لـ (long i = 0 ؛ i <fledata.longlength ؛ i ++)
{{
SaveFilestream.writeByte (filedata [i]) ؛
}
SaveFilestream.close () ؛
SendResults (0 ، solveUrl (SavePath + Filename) ، FileNamame ، "No Errors") ؛
}
}
}
config.xml
<إصدار XML؟
<pload>
<evabled> true </texed>
<Seratpath> </sublepath>
<MaxSize> 500000 </akxsize> <!-الوحدة هي بايت->
<file>
<lemt> zip |
<sworded> PHP3 |
</file>
<ICALE>
<swert> jpg |
<deny> </deny>
</Image>
<lash>
<lemt> SWF |
<deny> </deny>
</flash>
</pload>