/**
* 页面上显示需要上传的文件
* @private
*/
function _showUploadFile(file)
{
var reader = new FileReader();
console.log(file)
// console.log(reader);
//判断文件类型
if (file.type.match(/image*/))
{
reader.onload = function (e)
{
var formData = new FormData();
console.info("1:"+formData);
console.info(formData);
var li = $("#template li").clone();
var img = li.find("img");
var progress = li.find(".progress");
var percentage = li.find(".percentage");
percentage.text("0%");
img.attr("src", e.target.result);
$("ul", $(_uploadEle)).append(li);
$(_uploadEle).find("li").size() == 10 && $(_uploadEle).width(($(_uploadEle).width() + 8) + "px").css("overflow", "auto");
console.info(file);
//formData.uploadFile = file;
formData.append("uploadFile", file);
//上传文件到服务器
_uploadToServer(formData, li, progress, percentage);
};
reader.readAsDataURL(file);
}
else
{
console.log("此" + file.name + "不是图片文件!");
}
}
/**
* 上传文件到服务器
* @private
*/
function _uploadToServer(formData, li, progress, percentage)
{
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:8080/html5Upload/FileUploadServlet.html", true);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest', 'Content-Type', 'multipart/form-data;');
//HTML5新增的API,存储了上传过程中的信息
xhr.upload.onprogress = function (e)
{
var percent = 0;
if (e.lengthComputable)
{
//更新页面显示效果
percent = 100 * e.loaded / e.total;
progress.height(percent );
percentage.text(percent + "%");
percent >= 100 && li.addClass("done");
}
};
xhr.send(formData);
}
注:xhr.send(content);--向服务器发出请求,如果采用异步方式,该方法会立即返回。content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。
Ajax起初设计的理念就是方便异步实时无刷新的更新页面,所以其open的时候对应的url地址是该servlet相对于
服务器上的地址,服务器上的地址,服务器上的地址(重要的事情说三遍)。这个文件说白了和普通的处理表单请求的文件没什么区别,就一个servlet即可
不能写其他网站上的url请求地址,因为ajax是避免了跨域请求的。希望能给你点思路。
或者说你有更好 的方式,也可以告诉我,需求是这样的:http://blog.csdn.net/lmj623565791/article/details/31513065(实现图片拖拽上传,并存入指定路径下面)
一般是以get和post请求接收返回值。如果使用get,浏览器在网址上,也就是IP端会出现用户信息,虽然速度快,但信息不安全;如果用post,不会出现用户信息,信息安全,但速度慢!
$.ajax({
data:""//传递到服务器的数据
url:"",//映射服务器处理的servlet
success:function(data){
//请求成功,data为返回数据
},
error:function(){
//请求失败
},
});
http://www.cnblogs.com/telnetzhang/p/5795211.html
formData.append("uploadFile", file);,这个相当于一个name="uploadFile"的input。我只会php,所以我贴一下php的代码,你参考一下:
if (file_exists("./upload/" . $_FILES["uploadFile"]["name"]))
{
echo $_FILES["uploadFile"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["uploadFile"]["tmp_name"],"./upload/" . $_FILES["uploadFile"]["name"]);
echo json_encode($_FILES);
}