مشکل آپلود کردن بزرگترین مشکل برنامه نویسی من بوده.
البته در حین کار با asp classic
نیک آگاه هستم که تقریبا مشکل اکثریت برنامه نویس های کلاسیک کار هستش
یک سری کدهایی داخل نت هست که برای اپلود فایل با asp classic استفاده میشه
ولی هیچ کدام آژاکسی نیستن.
میخوام هم جاوااسکریپت پیشرفته رو بهتون آموزش بدم هم استفاده اون در آپلود کردن فایل با این زبان برنامه نویسی شیرین .
باور بفرمایید سالها با دات نت کار کردم .
ولی جا داره تنفر عمیق و تاسف فراوانمو از بابت این زبان شی گرای سنگین ابراز کنم .
تاسف از این بابت که چرا دات نت . چرا همین کلاسیکو توسعه ندادن کمی براش ابزار تولید نکردن که امثال من سالها زحمت بکشن تا یک چیز روتین که در پی اچ پی و دات نت و خیلی از زبانهای دیگه موجوده را تولید کنیم.
برای ما کلاسیک بازها این اوج ارزو باشه.

خیلی ساده :
کد HTML:
<input type="button" onclick="st()" value="Send Pic Base64" ><input type="button" onclick="pdf()" value="Open PDF OR TExt" ><img id="MYPIC" /><div id="TypeSize" ></div>
این کد html برنامه ما بودکه در خط بالا نوشته شد

و حالا کد های جاوا اسکریپتی داستان







فایل سمت کلاینت


function pdf(){
var xhr = new XMLHttpRequest();
xhr.open('GET', '4.pdf', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
if (this.status == 200) {
// get binary data as a response
var blob = this.response;
var TypeSize = document.getElementById('TypeSize');
TypeSize.innerHTML=" size : "+blob.size;
TypeSize.innerHTML= TypeSize.innerHTML + " Type : "+blob.type;
var reader = new FileReader();
//reader.readAsText(blob);
// reader.addEventListener("loadend", function(e){//alert();
// TypeSize.innerHTML = TypeSize.innerHTML + "<br /> Matn File : " +e.srcElement.result;//prints a string
// Aj("Fnews.pdf",e.srcElement.result);
//});
var base64data="" ;
reader.readAsDataURL(blob);
//alert();
reader.onloadend = function() {
base64data = reader.result;
Aj("Fnews.pdf",base64data);
//alert(reader.result);
}

}
};

xhr.send();
}
function Aj(namefile,val)
{

var da = new Date();
var Randd= da.getMilliseconds();
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert();
var strArray=xmlhttp.responseText.split('^');
alert(strArray[0]);

}
}
val=val.replace(/;/gi, "^");
alert(val);
xmlhttp.open("POST","AjaXULodFle.asp?Randd="+Randd +"&FileName="+namefile,true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("bas="+encodeURIComponent(val));


}





و در پایان استفاده از فایل با پسوند asp به عنوان کد اپلود کننده و همان فایل فراخوانی شده در قسمت آژاکس

<% @ Language=VBScript CodePage = 65001%>
<%


'response.write "^ok"+Request("bas")
Function SaveToBase64 (base64String)
Set Doc = Server.CreateObject("MSXML2.DomDocument")
Set nodeB64 = Doc.CreateElement("b64")
nodeB64.DataType = "bin.base64"
nodeB64.Text = Mid(base64String, InStr(base64String, ",") + 1)

dim bStream
set bStream = server.CreateObject("ADODB.stream")
bStream.type = 1
call bStream.Open()
call bStream.Write( nodeB64.NodeTypedValue )
call bStream.SaveToFile( Server.MapPath(".") +""+request.querystring("FileName"), 2 )
call bStream.close()
set bStream = nothing
end function


SaveToBase64(Replace(request("bas"),"^",";"))
%>