2

我有一个小问题。我正在做一个项目,我得到了我的根目录,然后我得到了 2 个文件夹:website1website2.

website1是工作人员面板,上传脚本所在的位置(此问题所在的位置)。website2是“客户”将看到的网站。所有上传的图片、PDF 等都上传到这里。

所以,在开始之前,我有一些注意事项:

  1. 我不能在我的 Javascript 中使用 PHP。Javascript 在 .js 文件中,而不是在我的 .php 文件中。
  2. 我不能在我的 AJAX 请求中执行此操作,因为客户端必须正确完成某些操作才能看到图像。

所以基本上,website1当我上传一个文件(使用 DropzoneJS(http://www.dropzonejs.com/))时,它会执行 AJAX 请求。在这里它必须将文件上传到website2. 在website1将图像上传到 IMG 标记后,我必须看到该图像。

所以在PHP中我得到了这个:

$uploadPath = filter_input(INPUT_POST, 'uploadPath');
$uploadPath = dirname(getenv('DOCUMENT_ROOT')) . '/' . $uploadPath;

这有效,文件被上传到该目录。$uploadPath这是(在 Javascript 中,在 AJAX 请求中作为 POST 参数发送):

/SITE2/assets/uploads/

现在我需要将dirnameand翻译getenv('DOCUMENT_ROOT')成 Javascript。我试过document.location.hostname了,但这确实返回了一个不同于getenv('DOCUMENT_ROOT').

document.location.hostname:127.0.0.1 getenv('DOCUMENT_ROOT'):D:/xampp/htdocs

如何获得与getenv('DOCUMENT_ROOT')Javascript 中相同的值?

4

3 回答 3

1

在 php 文件中,您可以使用 JavaScript 变量创建脚本,如下所示:

<script>
var DOCUMENT_ROOT = "<?= getenv('DOCUMENT_ROOT') ?>";
</script>

另一种选择是将您的 JavaScript 文件作为 PHP 脚本,然后您可以在其中使用 PHP 代码。

于 2016-05-02T13:30:50.290 回答
0

您有两个选择,但我提醒您将服务器/磁盘上的实际文件路径发送到客户端是一个坏主意

  1. 使用 Ajax,以便客户端发送类似的请求$.ajax({url: "getdir.php", success: someJSFuntion } );
  2. 将您的 JavaScript 文件更改为“.php”文件,然后在其中包含代码。

没有规范说您不能让您的 JS 文件成为“.php”文件。所以你会像这样链接到它:

<script type="text/javascript" src="/js/myjs.php"></script>

这将使您可以直接在 JS 文件中使用 PHP。

于 2016-05-02T13:45:17.323 回答
0

查看 php.js 的 JavaScript 端口dirname...

至于getenv('DOCUMENT_ROOT'),您无法通过 JavaScript 获取此变量值。原因是 JavaScript 文件的客户端“位置”没有说明它在服务器上的实际位置。您可以做的最好的事情是获取文件的父目录或域名。

例如:

http://example.com/path/to/file

就 JavaScript 而言,“DOCUMENT_ROOT”是......

/path/to

甚至假设需要将文件的服务器端位置提供给 JavaScript 似乎是非常不合适的。我将简单地使用一个特定的 URL 查询来指示要使用的位置,或者将位置与 AJAX 响应一起发回,因为您可以在那里添加任何您需要的东西。

{
    "document-root": "/SITE2/assets/uploads/",

    "normal-response": {
        ...
    }
}

然后无论您通常使用通常收到的东西,这种使用......

// For example
var response = JSON.parse (request.responseText);

// Normal response
console.log (response['normal-response'][...]);

// Document Root
console.log (response['document-root']);
于 2016-05-02T14:08:29.500 回答