【问题标题】:Setting a variable upload path in jQuery File Upload plugin在 jQuery File Upload 插件中设置可变上传路径
【发布时间】:2013-12-02 22:51:40
【问题描述】:

我正在使用blueimp jQuery File Upload plugin (documentation here),但在包含配置文件时遇到了问题(指示不同机器上上传目录的位置)。

这是必要的原因是我们本地开发服务器上的上传文件夹的相对路径与我们的生产服务器(使用 Capistrano 的 /shared/ 文件夹)上的不同。

所以我们处理这个问题的方法是在一个名为 constants.php 的文件中设置一个常量来表示不同机器上上传文件夹的路径,该文件从名为 config.php 的机器特定配置文件中读取。

然后我在上传处理程序 (UploaderHandler.php) 中包含 constants.php

问题是包含UploaderHandler.php中的文件导致上传者在开始上传后输出SyntaxError: Unexpected token <here's a screenshot)。

知道这里发生了什么吗?任何帮助表示赞赏!如果需要,我可以澄清问题:)

相关代码摘录如下:

/includes/constants.php

<?php 

# Grab machine-specific config file
include('config.php');

# Setup Constants for Steven's Machine
if ($_ENV["machine"] == "steven"){
  define('WEB_DIR', "c:/wamp/www/ourproject");
  define('SHARED', "c:/wamp/www/ourproject/shared");

# Setup Constants for Andrew's Machine
} elseif($_ENV["machine"] == "andy"){
  define('WEB_DIR', "/Applications/MAMP/htdocs/ourproject");
  define('SHARED', "/Applications/MAMP/htdocs/ourproject/shared");

# Setup Constants for Other Machines
} else {
  define('WEB_DIR', realpath($_SERVER["DOCUMENT_ROOT"]));
  define('SHARED', "/srv/www/ourwebsite.com/htdocs/shared");
}

?>

/includes/config.php

<?php

# Set the name of your machine
$_ENV["machine"] = "andy";

?>

/file-uploader/server/php/UploadHandler.php

<?php

include('../../../includes/constants.php');

class UploadHandler
{

... // Some code omitted

    function __construct($options = null, $initialize = true, $error_messages = null) {
        $this->options = array(
            'script_url' => $this->get_full_url().'/',
            'upload_dir' => SHARED.'/uploads/shipping/',
            'upload_url' => WEB_DIR.'/uploads/shipping/',
            'user_dirs' => false,
            'mkdir_mode' => 0755,
            'param_name' => 'files',
            // Set the following option to 'POST', if your server does not support
            // DELETE requests. This is a parameter sent to the client:
            'delete_type' => 'DELETE',
            'access_control_allow_origin' => '*',
            'access_control_allow_credentials' => false,
            'access_control_allow_methods' => array(
                'OPTIONS',
                'HEAD',
                'GET',
                'POST',
                'PUT',
                'PATCH',
                'DELETE'
            ),

... // More code omitted
?>            

开发者控制台输出:

<br />
<b>Notice</b>:  Constant WEB_DIR already defined in <b>/Applications/MAMP/htdocs/ourproject/includes/constants.php</b>     on line <b>13</b><br />
<br />
<b>Notice</b>:  Constant SHARED already defined in <b>/Applications/MAMP/htdocs/ourproject/includes/constants.php</b> on     line <b>14</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at     /Applications/MAMP/htdocs/ourproject/includes/constants.php:13) in <b>/Applications/MAMP/htdocs/ourproject/file-    uploader/server/php/UploadHandler.php</b> on line <b>1074</b><br />
{"files":[{"name":"photo (1).    PNG","size":91006,"type":"image\/png","url":"\/Applications\/MAMP\/htdocs\/ourprojectuploads\/shipping\/photo%20%281%29.    PNG","thumbnailUrl":"\/Applications\/MAMP\/htdocs\/ourprojectuploads\/shipping\/thumbnail\/photo%20%281%29.    PNG","deleteUrl":"http:\/\/localhost:8888\/ourproject\/file-uploader\/server\/php\/?file=photo%20%281%29.    PNG","deleteType":"DELETE"}]}

【问题讨论】:

    标签: javascript php jquery ajax file-upload


    【解决方案1】:

    听起来像从 UploaderHandler 返回的 json 字符串不是有效的 json。也许您会在输出中收到一些警告。

    您可以使用浏览器开发人员工具检查这一点。输出应该引导您进入正确的方向。

    【讨论】:

    • 嗨菲利普。我已经使用开发者控制台的输出编辑了帖子。
    • 看起来 JSON 字符串中的 URL 值是错误的(控制台输出的最后一行),它缺少我们的项目和上传之间的斜线,但是如果你查看 UploadHandler.php 文件,你会看到斜线被包括在内,所以我不确定那里发生了什么。另外,我什至不确定这是否与我收到的错误有关。
    • 顺便说一句,它实际上是将文件上传到正确的目录中。所以这是积极的,哈哈。
    • 因为您定义了WEB_DIRSHARED 两次,所以会生成警告输出,因此您无法修改http 标头,这也会生成警告。所以你有一些警告输出,在实际想要的 json 输出之前。您必须删除重复的 define 方法调用(只调用一次!)
    • 感谢您的快速回复! :) WEB_DIR 和 SHARED 常量如何定义两次?它不应该只定义一次(基于您的 $_ENV['machine'] 设置)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多