谷歌应用引擎,PHP:$ _FILES数组空 - 尝试了其他人在这里建议的一切

时间:2013-10-31 20:57:36

标签: php file google-app-engine post

这是我的第一篇文章。我已经阅读了几个关于这个问题的帖子。到目前为止,没有解决我的基本问题。我必须遗漏一些关于php.ini或app.yaml的内容,或者我真的必须在Google云端存储中创建一个“桶”,只是为了在一个页面上选择一个文件并将其传递给另一个?我被卡住了。任何帮助将不胜感激。

调用表单',import.php':

<form action="import_action.php" method="POST" enctype="multipart/form-data">
<table>
    <tr><td><input type="file" name="import_file" size="2000000"></td></tr>
    <tr><td><input type="submit" name="import" value="Import File"></td></tr>
</table>
</form>

...选择了一个文件。按下“导入文件”按钮。

POST调用的表单'import_action.php':

<html>
  <head>Import Action</head>
  <table>
    <tr><td>$_POST: <? var_dump($_POST); ?></td></tr>
    <tr><td>$_FILES: <? var_dump($_FILES); ?></td></tr>
  </table>
</html>

输出,'import_action.php':

导入行动
$ _POST:array(1){[“import”] =&gt; string(11)“Import File”}
$ _FILES:array(0){}

我认为GAE正在以某种方式处理文件,因为当我选择一个大于规定限制的文件时,$ _POST会被删除并且为空。此外,当我选择一个大文件时,显示被调用的表单'import_action.php'会有很长的时间延迟。

在其他平台上,这只是有效的。我没有设置的配置选项是什么?

这是php.ini,它在GAE中是一组覆盖:

output_buffering = on
google_app_engine.enable_functions = "phpversion, phpinfo"
track_vars = true
register_globals = true
enable_post_data_reading = true
file_uploads = on
upload_max_filesize = 20M
post_max_size = 30M

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您应该使用CloudStorageTools::createUploadUrl()作为表单的“操作”属性:https://developers.google.com/appengine/docs/php/googlestorage/#direct_uploads_to_google_cloud_storage_via_http_post