upload_handler.php应该放在哪里?

时间:2014-01-07 20:04:48

标签: php google-app-engine google-cloud-datastore

我正在使用PHP和REST API。我正在尝试使用AJAX上传文件并检索缩略图。

的app.yaml

- url: /api/(.*)
  script: api/index.php 
- url: /.*
  script: index.html

Javascript:当用户选择要上传的图像时,会触发此功能。

onFileSelect = function($files) {

    for (var i = 0; i < $files.length; i++) {
        var upload_url = $http.get('/api/upload/new'); //Create a new upload url

        $http.uploadFile({
            url: upload_url,
            file: $files[i]
        }).success(function(pulic_url, status) {
            console.log( pulic_url ); //Print the public url of the uploaded file
        })
    }
}

但这不起作用,我得到的公共网址如下:

http://localhost:8080/_ah/upload/adfrhtbnekj...

当我发出POST请求时,它只打印出index.html文件。这意味着它找不到我的upload_handler.php

我应该在哪里上传upload_handler.php?

1 个答案:

答案 0 :(得分:0)

上传处理程序必须在app.yaml文件中作为脚本引用。意思是应该能够像任何其他人一样调用脚本(即发出post / get请求,因为上传代理会像往常一样将[请求]重定向到您的应用程序)。您当前的文件只处理api /和。*到index.html,这意味着当访问/upload_handler.php时,它将被重定向到index.html。

也许你想要类似下面的内容

- url: /upload_handler.php
  script: upload_handler.php

# next release /(.+\.php)$ will work as well.
- url: /(.+\.php$) 
  script: \1