Uploader un fichier sans formulaire !

Contenu du snippet

Ce code vous permet d'uploader un fichier sans formulaire, pour cela il faut installer MSXML 4.0

Source / Exemple :


'Page coté Client
<HTML>
	<HEAD>
		<TITLE>File Send</TITLE></HEAD>
	<BODY>
		<DIV id="div_message">Ready</DIV>
	</BODY>
</HTML>
<SCRIPT LANGUAGE="JavaScript">
btn_sende()
// files upload function
function btn_sende()
{
   // Creation de l'objet ADO-stream
   var ado_stream = new ActiveXObject("ADODB.Stream");

   // Creation du Document XML document
   var xml_dom = new ActiveXObject("MSXML2.DOMDocument");
   xml_dom.loadXML('<?xml version="1.0" ?> <root/>');

   xml_dom.documentElement.setAttribute("xmlns:dt", "urn:schemas-microsoft-com:datatypes");

   // creation d'un nouveau noeud et définit le contenu en binaire
   var l_node1 = xml_dom.createElement("file1");
   l_node1.dataType = "bin.base64";

   ado_stream.Type = 1;  // 1=adTypeBinary 
        
   ado_stream.Open(); 
   
   'Spéficier le chemin du fichier à uploader
   ado_stream.LoadFromFile("D:\\test.txt");
   
   

   l_node1.nodeTypedValue = ado_stream.Read(-1); // -1=adReadAll
   ado_stream.Close();
   xml_dom.documentElement.appendChild(l_node1);
   

   // Envoie le document XMl sur un serveur web
   var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   xmlhttp.open("POST","Serveur + Pserv.asp",false);
   xmlhttp.send(xml_dom);
   // show server message in message-area
   div_message.innerHTML = xmlhttp.ResponseText;
}
</SCRIPT>

'Page coté Serveur
<%@ LANGUAGE=VBScript%>
<% Option Explicit
   Response.Expires = 0 
   

   dim ado_stream
   dim xml_dom
   dim xml_file1

   set ado_stream = Server.CreateObject("ADODB.Stream")
   ' Creation de l'objet XMLDOM et charge la demande de l'objet ASP
   set xml_dom = Server.CreateObject("MSXML2.DOMDocument")
   xml_dom.load(request)

   set xml_file1 = xml_dom.selectSingleNode("root/file1")

   ado_stream.Type = 1  ' 1=adTypeBinary 
   ado_stream.open 
   ado_stream.Write xml_file1.nodeTypedValue
   ' Sauve le fichier uploadé
   ado_stream.SaveToFile "/test.txt",2  ' 2=adSaveCreateOverWrite 
   ado_stream.close

   set ado_stream = Nothing 
   set xml_dom = Nothing
   ' Ecris le message dans le browser
   Response.Write "Upload successful!"
%>

A voir également