【问题标题】:SyntaxError: Unexpected token / ... Blueimp jQuery File UploadSyntaxError: Unexpected token / ... Blueimp jQuery 文件上传
【发布时间】:2013-03-21 23:36:46
【问题描述】:

我在我的本地机器(mac osx 默认服务器)上设置了这个多文件上传插件(https://github.com/blueimp/jQuery-File-Upload)。一切正常,当我上传图片时,我会收到此回复

[{
"name":"subaru-wrx-poster-i3(1).jpg",      
"size":142583,"type":"image\/jpeg",
"url":"http:\/\/shipwatchpointe.dev\/bundles\/jupload\/uploads\/files\/52\/subaru-wrx-poster-i3%20%281%29.jpg",
"thumbnail_url":"http:\/\/shipwatchpointe.dev\/bundles\/jupload\/uploads\/thumbnails\/52\/subaru-wrx-poster-i3%20%281%29.jpg",
"delete_url":"http:\/\/shipwatchpointe.dev\/upload\/upload\/?file=subaru-wrx-poster-i3%20%281%29.jpg&_method=DELETE",
"delete_type":"POST"
}]

但是,我刚刚推送到 EC2 实例上的暂存区域,现在我收到了此响应

//

前端出现错误提示...

SyntaxError: Unexpected token /

我在所有我能想到的地方扔了一堆骰子,但我没有到达它们并且仍然得到相同的响应。 EC2 实例正在运行 Ubuntu 12.10,我确保在 /etc/mime.types 中存在 application/json json,但由于某种原因,它看起来仍在尝试将其呈现为 html 并向我抛出该错误。在我的本地服务器上不存在的暂存服务器上可能存在什么问题?我可以粘贴我的代码,但我怀疑有很多 sn-ps 可能会导致问题。

编辑 这是我本地服务器上的响应标头(工作正常)

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:1532
Content-Type:image/png
Date:Wed, 03 Apr 2013 18:13:47 GMT
ETag:"30d598-5fc-4d978d09b8a80"
Keep-Alive:timeout=5, max=100
Last-Modified:Wed, 03 Apr 2013 18:13:46 GMT
Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch mod_ssl/2.2.22      
   OpenSSL/0.9.8r

这是我的登台服务器上的响应标头(不工作)

Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:23
Content-Type:text/html
Date:Wed, 03 Apr 2013 18:07:24 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.22 (Ubuntu)
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.10-1ubuntu3.6

【问题讨论】:

  • 您的最大上传文件大小是多少?另外,请您向我们展示您的浏览器为您提供的响应标头(这可能对我们有所帮助)?
  • upload_max_filesize = 20M upload_tmp_dir = /tmp file_uploads = On
  • 我也刚刚检查了两台服务器的整个 php.ini 文件,我认为没有什么异常会导致错误。我在尝试 20M 后将上传最大文件大小改回 2M 并推荐上传 tmp 目录..
  • 会不会是因为上传的图片在ubuntu服务器上被赋予了text/html的content-type,而在本地却赋予了image/png的content-type?
  • 这是可能的,虽然我不明白它是如何被赋予这种类型的。起初我认为这是一个 Laravel/BlueImp 兼容性问题,考虑到它使用了 header()echo ... (从来没有打算使用),但后来我怀疑它,因为它适用于您的本地服务器......所以,我不太确定这里发生了什么。

标签: javascript json laravel blueimp jquery-file-upload


【解决方案1】:

在此处读取文件可能存在问题。检查/Grep 您的登台服务器是否有任何在奇怪的地方(比如 PHP 文件的开头)有双斜杠 // 的源文件。

它可能会运行到该文件中,错误地打印那些斜线,并结束输出。

如果是这种情况,服务器很可能看不到 BlueImp 代码,因此所有那些与上传完全无关的简单输出标头。

【讨论】:

    【解决方案2】:

    您的内容类型在本地和网络服务器上看起来不同。看起来它可能是一个配置不正确的 Web 服务器。

    【讨论】:

    • 我也这么认为。 @coryjacik,您的登台服务器上还有其他奇怪的错误吗?其他一切正常吗?
    【解决方案3】:

    https://github.com/blueimp/jQuery-File-Upload/wiki/Setup

    在 PHP 网站上使用 jQuery File Upload (UI 版) 提供 示例实现开箱即用,只需要一步 供您将其添加到基于 PHP 的网站:

    下载插件存档,解压并上传解压后的文件 文件夹(您可以重命名)到您的服务器。访问上传​​的 目录 - 你应该看到与演示相同的文件上传界面, 允许您将文件上传到您的网站。

    如果上传文件不起作用,请确保 php/files 和 php/thumbnails 目录权限允许您的服务器写入访问权限。

    你确定你对“php/files”和“php/thumbnails”有正确的权限吗?

    这些是我能找到的唯一安装说明。您只是将文件复制到服务器还是使用自己的实现?有时从最简单的示例开始,然后添加内容以排除一些更明显的问题会有所帮助。

    如果您更改了代码,查看您的更改会有所帮助,这可能是导致问题的原因。

    【讨论】:

    • 文件和缩略图都是 777...我在 Laravel 中使用这个插件。我想我会简要介绍一下我的代码实现
    【解决方案4】:

    你的上传文件夹有写权限吗?

    【讨论】:

    • 777 可能有点矫枉过正,但无论如何
    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2016-04-06
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多