【发布时间】:2019-07-14 02:32:13
【问题描述】:
大家好,我成功找到了一种方法,该方法声称将文件输入文件转换为 JavaScript 中的 base 64 字符串,因此我成功发送了该 base 64
通过 AJAX 的 JSON 字符串和 base 64 编码字符串看起来像这样在 JSON 方法“photo”中发送:“data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wB etc....”
所以当base 64 字符串到达PHP 文件时。 PHP确实很神奇,并成功地将文件存储在我希望文件所在的目标文件夹中,所以当我查看该文件夹时,有一个文件,但是
当我尝试打开照片文件来查看它时,照片查看器应用会显示类似 image.jpg 的内容,看起来我们不支持这种文件格式,而在其他照片查看器应用中它会显示一些内容
类似,所以我做错了什么?
这是我的代码
index.php
<style>
#photo-input{
display: block;
margin-bottom: 50px;
}
</style>
<script>
document.addEventListener('DOMContentLoaded',function(){
document.querySelector('#submit').addEventListener('click',function(){
var photo_input= document.querySelector('#photo-input').files[0];
//Convert #photo-input content into a base 64 string
var reader = new FileReader();
reader.readAsDataURL(photo_input);
reader.onload = function (){
var photo_input_result= reader.result;
sendUploadInfo(photo_input_result);
}
//
});
function sendUploadInfo(photo_input_result){
var photo= photo_input_result;
//<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);
$path= $_SERVER['DOCUMENT_ROOT'].'/send-json-data-by-ajax/object-based/with-file/2/images/image.jpg';
file_put_contents($path, $photo);
//
?>
<h1><?php echo $first_name.' '.$last_name.' just uploaded a photo.'; ?></h1>
【问题讨论】:
标签: javascript php base64