做了一个上传头像的功能,先选择头像(用按钮代替了丑陋的input),选择文件成功,用 input onchange() 句柄 做的预览图片功能也成功,确认上传的时候,想用AJAX,从
有什么方法能ajax上传文件呢 ?
了解到可以用 原生JS + FormData 上传。点击按钮,POST返回301,POST的内容很丰富,应该是发送成功了;响应返回200,应该也是成功了。
但是服务器的特定路径里就是没有上传的文件,请问为什么?
代码如下:
TODO supply a title
function loading()
{
upload_thumbnail();
}
function upload_thumbnail()
{
var upload_thumbnail_node = document.getElementById(‘upload_thumbnail’); // 选择文件按钮
var upload_thumbnail_input = document.getElementById(‘upload_thumbnail_input’); // input file
var thumbnail_node = document.getElementById(‘thumbnail’); // 图片预览
var upload_thumbnail_submit_node = document.getElementById(‘upload_thumbnail_submit’); // 确认上传按钮
upload_thumbnail_node.onclick = function()// 按钮代替 input
{
upload_thumbnail_input.click();// 打开文件管理器
upload_thumbnail_input.onchange = function()// 图片预览
{
thumbnail_node.src = window.URL.createObjectURL(upload_thumbnail_input.files[0]);
};
};
upload_thumbnail_submit_node.onclick = function()// 上传
{
var xml = new XMLHttpRequest();
var form_obj = new FormData();
var file = upload_thumbnail_input.files[0];
form_obj.append(‘file’,file);
xml.open(“POST”,”./save/thumbnail”);
xml.send(form_obj);
alert(“success!”);
};
}
选择头像
确认上传
这个input应该是隐藏的,但是为了找bug,就显示出来了