Để upload được dữ liệu từ client bạn cần phải dùng hàm javascript để lấy dữ liệu trong thư mục client mà truyền lên cho sever. và sau đó sever sẽ dùng hàm Reuqest.Files để nhận chuỗi dữ liệu file truyền từ client. Bên cạnh đó các bạn cũng nhớ đến đặt thêm thuộc tính BUG : Dữ liệu nhận được không giống với dữliệu ban đầu...không biết format thế nào mới đúng
<form runat="server" id="from" enctype="multipart/form-data" > để đảm bảo không sai xót
Code
HTML File
--------------------------------
<script language="javascript">
var url = "ajax/ajaxFile.aspx";
var binary;
var filename;
var mytext;
function upload() {
filename = document.getElementById('myfile').value;
mytext = document.getElementById('mytext').value;
document.getElementById('ajaxbutton').disabled = true;
// request local file read permission
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert("Permission to read file was denied.");
}
// open the local file
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( filename );
stream = Components.classes["@mozilla.org/network/file-input-stream;1"]
.createInstance(Components.interfaces.nsIFileInputStream);
stream.init(file, 0x01, 00004, null);
var bstream = Components.classes["@mozilla.org/network/buffered-input-stream;1"]
.getService();
bstream.QueryInterface(Components.interfaces.nsIBufferedInputStream);
bstream.init(stream, 1000);
bstream.QueryInterface(Components.interfaces.nsIInputStream);
binary = Components.classes["@mozilla.org/binaryinputstream;1"]
.createInstance(Components.interfaces.nsIBinaryInputStream);
binary.setInputStream (stream);
// start AJAX file upload in 1 second
window.setTimeout("ajax_upload()", 1000);
}
function ajax_upload() {
// request more permissions
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert("Permission to read file was denied.");
}
http_request = false;
http_request = new XMLHttpRequest();
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
// prepare the MIME POST data
var boundaryString = 'capitano';
var boundary = '--' + boundaryString;
var requestbody = boundary + '\n'
+ 'Content-Disposition: form-data; name="mytext"' + '\n'
+ '\n'
+ mytext + '\n'
+ '\n'
+ boundary + '\n'
+ 'Content-Disposition: form-data; name="myfile"; filename="'
+ filename + '"' + '\n'
+ 'Content-Type: application/octet-stream' + '\n'
+ '\n'
+ escape(binary.readBytes(binary.available()))
+ '\n'
+ boundary;
document.getElementById('sizespan').innerHTML =
"requestbody.length=" + requestbody.length;
// do the AJAX request
http_request.onreadystatechange = requestdone;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "multipart/form-data; \
boundary=\"" + boundaryString + "\"");
http_request.setRequestHeader("Connection", "close");
http_request.setRequestHeader("Content-length", requestbody.length);
http_request.send(requestbody);
}
function requestdone() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
result = http_request.responseText;
document.getElementById('myspan').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
document.getElementById('ajaxbutton').disabled = false;
}
}
</script>
<form>
Text: <input type="text" id="mytext" name="mytext" size="40">
<br>
File: <input type="file" id="myfile" name="datafile" size="40"><br>
<input type="button" id="ajaxbutton" value="AJAX IT" onclick="upload();">
</form>
<div id="sizespan"></div>
<hr>
<div id="myspan"></div>
--------------------------------------------------------------
asp.net File
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Files.Count > 0)
{
try
{
for (int i = 0; i < Request.Files.Count; i++)
{
int values = Request.Files.FileName.LastIndexOf('\\');
string filename = Request.Files.FileName.Substring(values + 1);
String strSavePath = Server.MapPath(ConfigurationManager.AppSettings["NewsImage"]) +"\\"+ filename;
Response.Write(strSavePath);
Request.Files.SaveAs(strSavePath);
}
}
catch(Exception objEx)
{
Response.Write(objEx.Message);
}
}
else
{
Response.Write(" khong co file");
}
}