【问题标题】:Cant upload files from mobile version to classic version directory, same domain移动版无法上传文件到经典版目录,同域
【发布时间】: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


【解决方案1】:

我找到了一个工作区并将子域目录移动到 public_html 中,必须了解一些关于 .htacces 的知识,看来这样我就不会遇到所有那些讨厌的权限问题,其他工作区发布在类似的线程 Vic Seedoubleyew张贴似乎对我没有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多