Я хочу загрузить файл, когда пользователь нажимает Ctrl-V в текстовом поле. Мне сказали, что мне нужен обработчик запроса php POST. Я попробовал сделать это по аналогии с загрузкой файла из формы. Но мой браузер показывает (не могу опубликовать изображение, так как моя репутация ниже 10. вот ссылка) (https://c.radikal.ru/c18/2006/09/c2eca4d74442.png) На картинке браузер показывает окно с подтверждением действия на странице (я перевел с русского). В нем показан результат выполнения кода php. Код говорит: «Извините, произошла ошибка при загрузке вашего файла ...» Похоже, я не могу поймать tmp-файл, так как echo tmpfile не отображается.
Как правильно написать обработчик POST?
Вот мой код:
html:
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3" bgcolor="#E6E6E6"><strong>Create New Topic</strong> </td>
</tr>
<tr>
<td width="14%"><strong>Topic</strong></td>
<td width="2%">:</td>
<td width="84%"><input name="topic" type="text" id="topic" size="50" /></td>
</tr>
<tr>
<td valign="top"><strong>Detail</strong></td>
<td valign="top">:</td>
<td><textarea name="detail" cols="50" rows="3" id="detail"></textarea></td>
<img id="pastedImage"></img>
</tr>
js:
document.getElementById('detail').onpaste = function (event) {
var reader = new FileReader();
reader.onload = function(event) {
this.Files = event.file;
};
let filepath = "upload/images/tmp.png";
//reader.readAsDataURL(blob);
let f = new File([this.Files], filepath);
console.log(f);
//let photo = document.getElementById("image-file").files[0]; // file from input
let req = new XMLHttpRequest();
let formData = new FormData();
formData.append("photo", f);
call_php();
req.open("POST", '/upload/images');
req.send(formData);
}
}
function call_php(){
$.ajax({
type: "POST",
url: "add_new_topic.php",
//data: { file }
}).done(function( result ) {
alert(result);
});
}
php:
<?php
$target_dir = "upload/images/test1.png";
$target_file = $target_dir;// . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
echo $_FILES["fileToUpload"]["tmp_name"];
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". $target_file. " has been uploaded.";
$_POST['img'] = $target_file;
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>