Javascript 使用ajax上传图像的GitHub API
我使用GitHub API和JS来创建一个小脚本Javascript 使用ajax上传图像的GitHub API,javascript,ajax,api,github,github-api,Javascript,Ajax,Api,Github,Github Api,我使用GitHub API和JS来创建一个小脚本#create,#Delete,#Edit 例如: 它可以很好地处理上传的文本文件 但问题是,我想上传一张图片,比如说,或者在Github上上传一段视频 当我上传图像时,它看起来像这样: �PNG IHDRHHU��G cHRMz&�����u0�`:�p��Q<bKGD�������tIME� /��p�IDATx�͜wx�E��?��rs��BK!���D���}�?�� ]uu��,��.�bߵ TT��CH��rs�
#create
,#Delete
,#Edit
例如:
它可以很好地处理上传的文本文件
但问题是,我想上传一张图片,比如说,或者在Github上上传一段视频
当我上传图像时,它看起来像这样:
�PNG
IHDRHHU��G cHRMz&�����u0�`:�p��Q<bKGD�������tIME�
/��p�IDATx�͜wx�E��?��rs��BK!���D���}�?��
]uu��,��.�bߵ
TT��CH��rs����ǽ�
...
�巴布亚新几内亚
IHDRHHU��G cHRMz&�����u0�`:�P��问题是如何将图像编码到base64。在readURL
函数中使用:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onloadend = function() {
var base64result = reader.result.substr(reader.result.indexOf(',') + 1);
createfile(input.files[0].name, "uploading a file", base64result)
}
reader.readAsDataURL(input.files[0]);
}
}
这将使图像base64编码并使用解决方案从中剥离文件类型。完整代码:
const nameWithOwner='el3zahaby/testet';
const token='您的访问令牌';
功能手柄文件选择(evt){
readURL(evt.target);
}
document.getElementById('files').addEventListener('change',handleFileSelect,false);
函数readURL(输入){
if(input.files&&input.files[0]){
var reader=new FileReader();
reader.onloadend=函数(){
var base64result=reader.result.substr(reader.result.indexOf(',')+1);
createfile(input.files[0]。名称,“上载文件”,base64result)
}
reader.readAsDataURL(input.files[0]);
}
}
函数createfile(文件名、文件消息、文件内容){
var apirl=”https://api.github.com/repos/“+nameWithOwner+”/contents/“+fileName;
var filedata=JSON.stringify({
“消息”:fileMessage,
“内容”:文件内容
});
$.ajax({
url:apiurl,
键入:“PUT”,
发送前:函数(xhr){
setRequestHeader(“授权”、“令牌”+令牌);
},
数据:filedata
}).完成(功能(响应){
控制台日志(响应);
});
}
听起来像标题
issuenope@Mr.x如果它的标题
问题:它从未被发送过..请问有什么解决方案吗?@zahaby显示用于上传图像的代码,它为您提供了文件内容
input@BertrandMartel我在更新1中添加了它。这非常有用,非常感谢,,,但我认为,如果我们将第15行替换为:(/data:\w*\/\w*;base64,/gm,)
将是better@zahaby你说得对,我已经更新了关于这个问题的解决方案
function readURL(input) {
if (input.files && input.files[0]) {
//console.log(input.files[0].getAsBinary());
// createfile(input.files[0].name,"uploading a file", input.files[0])
var reader = new FileReader();
reader.onload = function (e) {
$('#falseinput').attr('src', e.target.result);
$("#v1").html('<source src="'+ e.target.result +'" type="video/mp4"></source>' );
$('#base').val(e.target.result);
$('#base1').val(btoa(unescape(encodeURIComponent(reader.result))));
var content = e.target.result;
createfile(input.files[0].name,"uploading a file", unescape(encodeURIComponent(content)))
};
if (allow.binary.indexOf(input.files[0].type) === -1) {
alert(input.files[0].type);
reader.readAsText(input.files[0],"UTF-8");
}else{
reader.readAsDataURL(input.files[0]);
}
}
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onloadend = function() {
var base64result = reader.result.substr(reader.result.indexOf(',') + 1);
createfile(input.files[0].name, "uploading a file", base64result)
}
reader.readAsDataURL(input.files[0]);
}
}