我试图弄清楚如何向JSON对象添加文件,但我发现您无法使用JSON执行此操作,因此超时后我发现可以使用方法调用基础64并对文件输入进行编码文件作为字符串并将其插入JSON对象中,然后通过AJAX发送并通过
对该字符串进行解码PHP将再次成为文件,但是我现在遇到的问题是能够实际存储已解码的base 64字符串图像,该图像现在将成为图像文件到目标文件夹中。我是这个Base 64编码和解码的新手,如果我的Base 64逻辑不好,请给我
足够了,所以我不确定我实际上在做什么,我只是在线收集方法,只是阅读文档以能够完成我想做的事情,但是我对理解过程的运气并不好。为此所需的代码。因此,如果有人可以给我提供我的代码示例
非常感谢。我只是厌倦了阅读和阅读,并且没有完全理解所有这些部分如何协同工作以实现这一目标。
这是我的代码
index.php
<style>
#photo-input{
display: block;
margin-bottom: 50px;
}
</style>
<script>
document.addEventListener('DOMContentLoaded',function(){
document.querySelector('#submit').addEventListener('click',sendUploadInfo);
function sendUploadInfo(){
var photo= window.btoa(document.querySelector('#photo-input').files[0]);//<-btoa encodes photo upload as a string
//<JSON data>
var upload_info = {
first_name: "John",
last_name: "Smith",
photo: photo
};
//</JSON data>
var upload_info_json_object= 'upload_info_json_object='+JSON.stringify(upload_info);
//<AJAX>
var xhr= new XMLHttpRequest();
xhr.onreadystatechange= function(){
if(xhr.readyState == 4){
document.querySelector('#output').innerHTML= xhr.responseText;
}
}
xhr.open('POST','x');
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(upload_info_json_object);
//</AJAX>
}
});
</script>
<input type='file' id='photo-input'>
<button id='submit'>Send JSON data</button>
<div id='output'></div>
x.php
<?php
$upload_info_json_object = json_decode($_POST['upload_info_json_object']);
$first_name= $upload_info_json_object->first_name;
$last_name= $upload_info_json_object->last_name;
//Photo upload section
$photo= $upload_info_json_object->photo;
base64_decode($photo); /*I don't know where to go from here and how I can make this
file go to a targeted folder. This is the path I want to store the image file at 'images/'*/
//
?>
<h1><?php echo $first_name.' '.$last_name.' just uploaded a photo.'; ?></h1>