Project

General

Profile

1
<html>
2
<body>
3
<script>
4
var url = "post.php";
5
var binary;
6
var filename;
7
var mytext;
8

    
9
function upload() {
10
	filename = document.getElementById('myfile').value;
11
	mytext = document.getElementById('mytext').value;
12
	document.getElementById('ajaxbutton').disabled = true;
13

    
14
	
15
	
16
	// open the local file
17
	var file = Components.classes["@mozilla.org/file/local;1"]
18
		.createInstance(Components.interfaces.nsILocalFile);
19
	file.initWithPath( filename );		
20
	stream = Components.classes["@mozilla.org/network/file-input-stream;1"]
21
		.createInstance(Components.interfaces.nsIFileInputStream);
22
	stream.init(file,	0x01, 00004, null);
23
	var bstream =  Components.classes["@mozilla.org/network/buffered-input-stream;1"]
24
		.getService();
25
	bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
26
	bstream.init(stream, 1000);
27
	bstream.QueryInterface(Components.interfaces.nsIInputStream);
28
	binary = Components.classes["@mozilla.org/binaryinputstream;1"]
29
		.createInstance(Components.interfaces.nsIBinaryInputStream);
30
	binary.setInputStream (stream);
31

    
32
	// start AJAX file upload in 1 second
33
	window.setTimeout("ajax_upload()", 1000);
34
}
35

    
36
function ajax_upload() {
37
	// request more permissions
38
	
39

    
40
	http_request = false;
41
	http_request = new XMLHttpRequest();
42
	if (!http_request) {
43
		alert('Cannot create XMLHTTP instance');
44
		return false;
45
	}
46

    
47
	// prepare the MIME POST data
48
	var boundaryString = 'capitano';
49
	var boundary = '--' + boundaryString;
50
	var requestbody = boundary + '\n' 
51
	+ 'Content-Disposition: form-data; name="mytext"' + '\n' 
52
	+ '\n' 
53
	+ mytext + '\n' 
54
	+ '\n' 
55
	+ boundary + '\n' 
56
	+ 'Content-Disposition: form-data; name="myfile"; filename="' 
57
		+ filename + '"' + '\n' 
58
	+ 'Content-Type: application/octet-stream' + '\n' 
59
	+ '\n'
60
	+ escape(binary.readBytes(binary.available()))
61
	+ '\n'
62
	+ boundary;
63

    
64
	document.getElementById('sizespan').innerHTML = 
65
		"requestbody.length=" + requestbody.length;
66
	
67
	// do the AJAX request
68
	http_request.onreadystatechange = requestdone;
69
	http_request.open('POST', url, true);
70
	http_request.setRequestHeader("Content-type", "multipart/form-data; \
71
		boundary=\"" + boundaryString + "\"");
72
	http_request.setRequestHeader("Connection", "close");
73
	http_request.setRequestHeader("Content-length", requestbody.length);
74
	http_request.send(requestbody);
75

    
76
}
77

    
78
function requestdone() {
79
	if (http_request.readyState == 4) {
80
		if (http_request.status == 200) {
81
			result = http_request.responseText;
82
			document.getElementById('myspan').innerHTML = result;            
83
		} else {
84
			alert('There was a problem with the request.');
85
		}
86
		document.getElementById('ajaxbutton').disabled = false;
87
	}
88
}
89

    
90
</script>
91

    
92
<form>
93
Text: <input type="text" id="mytext" name="mytext" size="40">
94
<br>
95
File: <input type="file" id="myfile" name="datafile" size="40"><br>
96
<input type="button" id="ajaxbutton" value="AJAX IT" onclick="upload();">
97
</form>
98

    
99
<div id="sizespan"></div>
100
<hr>
101
<div id="myspan"></div>
102

    
103
</body>
104
</html>
(20-20/24)