无法多次发布同一文件

亚当·T

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

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中,如果我将POST请求form-data(包括文件)发送到“ somefile.up.php”,则第一次在PHP端单击Postman中的“发送”,如果print_r同时在$ _POST和$ _FILES数组,我可以看到所有预期的数组键和值,包括$ _FILES。

如果我在邮递员中发送另一个POST请求,并且所有细节都相同,则$ _FILES数组为空(我只看到$ _POST vars打印)。似乎文件根本不存在。有时唯一可行的方法是选择一个不同的文件上载(在Postman中),然后再次发送请求,但是该文件只能发送一次。后续发送将产生一个空的$ _FILES数组。

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

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

更新:如果我使用外壳(在这种情况下为babun)执行操作,则可以每次正确发送文件。所以我的猜测是Postman内部正在发生某种事情。这大约以50%的方式解决了我的问题,这仅仅是因为最初接收文件的脚本必须验证其内容,然后执行Curl发布以将其发送到另一台服务器。尝试该操作后,文件不会到达$ _FILES数组中。

UPDATE2:通过更新代码解决了服务器之间的文件发送问题。该代码在文件名之前使用了非常古老的'at符号'来获取其内容。更新了每个建议的代码,即“忘记使用curl文件创建”因此,这是对Postman Standalone应用程序进行故障排除的问题。

亚当·T

我觉得这是Postman独立应用程序内的问题。我在他们的github问题跟踪器中看到了类似的内容,但是它们是较早的问题,可以追溯到Postman只是浏览器扩展时。

我还没有找到答案,也许在独立的Postman应用程序中还有更多控件或设置需要处理。

似乎命令行卷曲(带有或不带有文件)可以进行多次,并且每次都起作用。如果我在Postman应用程序中重复(相同)呼叫,似乎有时会“挂起”并且在单击“取消请求”按钮之前不会做任何事情。如果我再等待几秒钟,那就可以了。

谢谢阅读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章