【发布时间】:2016-05-20 19:07:35
【问题描述】:
我目前在从我正在使用的网站的移动版本上传文件时遇到问题,我认为这个问题与移动版本文件位于名为 m 的文件夹内的 public_hmtl 文件夹之外的事实有关,这样做是因为 m.site.com 链接无法正常工作,因为我使用经典站点文件夹来存储所有媒体,所以问题从这里开始:
这是我正在使用的路径:
- /
- /米
- /public_html
文件在
- /m/user/fnc/upload.php
被指示保存一个img到
- /public_html/photos/users/
这是 upload.php 中的代码片段 对于第一行,我使用了一个名为 $img 的重定向变量,它指向经典版本的索引,即
- www.mysite.com/
所以
$URL = $img.'photos/users/';
$NewFotoName = "misite_".$usuarioid."_".time().".jpg";
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$imagen = $_POST['Imagen'];
if ( isset($_POST['Imagen']) ) {
$image = base64_decode($imagen);
$im = imagecreatefromstring($image);
imagepng($im,$URL.$NewFotoName);
imagedestroy($im);
$query = "UPDATE Utenti SET foto = '$NewFotoName' WHERE id_utente = ".$usuarioid;
$result = $mysqli->query($query);
if(!$result){die($mysqli->error);}
echo "index2.php";
die();
} else {
echo "index2.php";
die();
}
} else {
echo "index2.php";
die();
}
我从它上面的一个文件夹中调用它,使用以下代码调用 index2.php:
$('.upload-result').on('click', function (ev) {
$uploadCrop.croppie('result', {
type: 'canvas',
size: 'original'
}).then(function (resp) {
$('#imagebase64').val(resp);
var imagen_cortada = $('#imagebase64').val();
var base64image = imagen_cortada;
var parametros = { "Imagen" : base64image };
$.ajax({
data: { "Imagen" : output },
url: 'fnc/upload.php',
method: 'POST', // or GET
success: function(msg)
{
alert("Imagen subida con exito.");
alert(msg);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert("Error al Subir la Imagen.");
alert(errorThrown);
window.location.replace(msg);
}
});
现在,当提交表单时,我会收到一个成功警报,但在“alert(msg);”中我收到一条错误提示
imagepng(path/to/the/file.png): 无法打开流;没有这样的文件或 /home/mysite/m/user/fnc/upload.php 中的目录
所以文件名被保存到数据库中,但文件没有。
感谢任何建议,请原谅任何拼写错误。
//编辑 我找到了一个工作区,并将子域目录移到了 public_html 中,必须了解一下 .htacces,看来这样我就不会遇到所有那些讨厌的权限问题了
【问题讨论】:
-
然后使用完整的系统路径。即:
/var/usr/folder_name/并检查权限 -
尝试使用 ../../../public_html/photos/user/ 作为路径,但最终出现同样的错误,关于权限的问题,我读了一些关于 https 和 cors 的内容,但是我不认为这适用于这里,因为它是同一个域
标签: javascript php ajax https