无法多次POST同一个文件

时间:2018-02-26 01:59:10

标签: php apache postman

希望有一个简单的改变(或忽略的东西)。 我们将一个PHP应用程序从Redhat 5.9和PHP 5.4.14移植到:

PHP 5.6.33 (cli) (built: Jan 14 2018 08:26:10)
Red Hat Enterprise Linux Server release 6.9 (Santiago)

在这两种情况下,都是Apache 2.2.23

我们有一个API,允许特定的应用程序发送POST数据,有时还发送文件。 (我们在测试时使用POSTMAN。)

在Postman中,如果我将form-data(包括文件)的POST请求发送到" somefile.up.php",我第一次点击"发送&# 34;在Postman中,在PHP端,如果我在$ _POST和$ _FILES数组上print_r,我可以看到所有预期的数组键和值,包括$ _FILES。

如果我在Postman中发送另一个POST请求,并且所有细节都相同,则$ _FILES数组为空(我只看到打印的$ _POST vars)。 看起来文件根本就不存在。有时唯一有用的是选择一个不同的文件进行上传(在Postman中)并再次发送请求,但那个文件只能发送一次。后续发送会产生一个空的$ _FILES数组。

我已经检查了文件被发送到的位置(暂时),并且$_FILES['keyname']['tmp_name']的值通常为/tmp/php...,文件到达时[error]值为0。我还可以看到文件的名称和类型,以及它的大小。 我还检查了post_max_sizeupload_max_filesize的php.ini值,并且post_max_size大了1M。

当应用程序在PHP 5.4.14和Redhat 5.9下运行时,我们能够多次发送相同的文件

UPDATE :如果我使用shell执行操作(在本例中为babun),我可以每次都正确发送文件。所以我的猜测是Postman内部正在发生的事情。这个问题大约50%解决了我的问题,只是因为最初接收文件的脚本必须验证其内容,然后执行Curl帖子将其发送给另一台服务器。一旦尝试,该文件不会到达$ _FILES数组。

UPDATE2 :通过更新代码解决了从服务器到服务器问题的问题。该代码使用了非常古老的符号'在文件名前面以获取其内容。更新了每个建议forget-the-at-use-curl-file-create的代码。因此,此时需要对Postman Standalone应用程序进行故障排除。

1 个答案:

答案 0 :(得分:0)

我觉得这个问题是在Postman独立应用程序中。我在他们的github问题跟踪器中看到了类似的东西,但是当Postman只是一个浏览器扩展时,它们是较早的问题。

我还没有找到答案,也许在独立的Postman应用程序中有更多的控件或设置可以搞乱。

似乎命令行卷曲(有或没有文件)可以多次进行并且每次都可以工作。如果我在Postman应用程序中进行重复(相同)调用,它似乎有时候会挂起来#39;并且在我点击"取消请求"之前不会做任何事情。按钮。如果我再等几秒钟,那就再好了。

感谢阅读。