gpt4 book ai didi

php - 尝试使用 TinyMCE 上传图像时出现错误 403

转载 作者:行者123 更新时间:2023-12-01 03:32:21 25 4
gpt4 key购买 nike

我尝试通过 TinyMCE 上传图像,但编辑器中显示“HTTP 错误:403”。我分别从网站上获取了脚本和 php 页面的代码:

tinymce.init({
selector: "textarea",
plugins: "link image",

height:300,
setup: function (editor) {
editor.on('change', function () {editor.save();});

},

images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;

xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', 'queries/editorImageUpload.php');

xhr.onload = function() {
var json;

if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}

json = JSON.parse(xhr.responseText);

if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}

success(json.location);
};

formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());

xhr.send(formData);
}

});

然后在“editorImageUpload.php”中,我认为问题与 $accepted_origins 部分有关,因为它返回 403 错误:

$accepted_origins = array("https://localhost", "https://77.104.172.194");

$imageFolder = "pictures/Test/";

reset ($_FILES);
$temp = current($_FILES);
if (is_uploaded_file($temp['tmp_name'])){

if (isset($_SERVER['HTTP_ORIGIN'])) {
// same-origin requests won't set an origin. If the origin is set, it must be valid.
if (in_array($_SERVER['HTTP_ORIGIN'], $accepted_origins)) {
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
} else {
header("HTTP/1.1 403 Origin Denied");
return;
}
}

对此的任何见解都会非常有帮助。

最佳答案

首先,您的代码有两个问题
-你的php代码没有将图像传输到服务器
-在您的 php 代码中,您正在使用“https://localhost ”制作 $accepted_origins 数组,并且您忘记了不安全版本“http://localhost

因此,解决问题的最快方法是编写有效的 php 代码,将图像传输到服务器并返回编辑器的图像完整路径,这里是 php 代码

editorImageUpload.php

<?php 
$ds = DIRECTORY_SEPARATOR;

$storeFolder = 'images';

if (!empty($_FILES))
{
$tempFile = $_FILES['file']['tmp_name'];

$targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;

$file_name = substr(md5(rand(1, 213213212)), 1, 5) . "_" . str_replace(array('\'', '"', ' ', '`'), '_', $_FILES['file']['name']);

$targetFile = $targetPath. $file_name;

if(move_uploaded_file($tempFile,$targetFile)){
die( $_SERVER['HTTP_REFERER']. $storeFolder . "/" . $file_name );
}else{
die('Fail');
}

}
?>

并且在您的 javascript 回调中,您必须检查 xhr.response 而不是 xhr.responseText,因为您将因图像完整路径而死亡

Tinymce代码

 tinymce.init({
selector: "textarea",
plugins: "link image",
height:300,

images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;

xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', 'editorImageUpload.php');

xhr.onload = function() {
var json;

if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}

console.log(xhr.response);
//your validation with the responce goes here

success(xhr.response);
};

formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());

xhr.send(formData);
}

});

关于php - 尝试使用 TinyMCE 上传图像时出现错误 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49449413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com