我正在尝试使用 Imgur API 在我的网站上创建一个功能,当我写博客文章时,我可以将图像拖到其中<textarea>
,然后将其上传到 Imgur,链接将插入到 textarea 中我。此功能利用了 HTML5 的 Draggable/Droppable 功能、新FileReader
对象和 jQuery AJAX。
到目前为止,当我使用$.ajax()
向 API 发送请求时,API 返回 400 错误,并显示消息“不支持文件类型或图像已损坏”。但是,我知道我的图像的文件类型是受支持的data/png
(FileReader
$(document).ready(function(e) {
var area = document.getElementById('post_body');
function readFiles(files) {
console.log("readfiles called! files: ");
console.log(files);
var fr = new FileReader();
fr.onload = function(event) {
console.log(event);
var dat = "{image:'"+event.target.result+"'}";
console.log(dat);
$.ajax({
type:"POST",
data:dat,
url:'https://api.imgur.com/3/image',
headers: {
Authorization: "Client-ID CLIENT-ID-WAS-HERE"
},
contentType: "text/json; charset=utf-8",
dataType: "json",
success:function(msg) {
console.log(msg);
area.innerHTML += msg.data;
},
error:function(errormsg) {
console.log(errormsg);
alert("Sorry, there was an error uploading the image." + errormsg.responseText);
}
});
}
fr.readAsDataURL(files[0]);
}
area.ondragover = function(e) {
e.preventDefault();
console.log("ondragover fired!");
$(this).addClass('hover');
}
area.ondragend = function(e) {
e.preventDefault();
console.log("ondragend fired!");
$(this).removeClass('hover');
}
area.ondrop = function(e) {
console.log("ondrop fired!!");
if ($(this).hasClass('hover')) $(this).removeClass('hover')
e.preventDefault();
readFiles(e.dataTransfer.files);
}
});