当前位置: 首页 > 知识库问答 >
问题:

PHP Curl文件上传多部分边界

范玄裳
2023-03-14

编写代理文件上载的应用程序。我正在使用CURL发布文件,但有一些问题。发布到脚本是正常的,它从脚本发布到下一个服务器就是问题所在。我一直从服务器收到此错误:

“请求被拒绝,因为没有找到多部分边界”

这是我的代码:

            $post = $_POST;

            // allow for file upload proxying
            if( !empty( $_FILES ) ){
                    // add to post data
                    foreach( $_FILES as $name => $upload ){
                            $post[ $name ] = '@' . $upload[ 'tmp_name' ] . ';type=image/png';
                    }   
            } 

            // init curl
            $ch = curl_init( $url );

            // configure options
            curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
            curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );

            // post data
            if( !empty( $post ) ){
                    curl_setopt( $ch, CURLOPT_POST, true );
                    curl_setopt( $ch, CURLOPT_POSTFIELDS, $post );
                    // for file uploads, multi-part
                    curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
                            'Content-type: multipart/form-data;'
                    ) );
            }   

            // execute and get return value 
            $return = trim( curl_exec( $ch ) );

            // cleanup
            curl_close( $ch );
            unset( $ch );

我在网上读到的所有内容都表明,这应该可行,而且设置标题内容类型也是不必要的,但当我删除内容类型时,我会出现以下错误:

请求不包含多部分/表单数据或多部分/混合流,内容类型标头为null

有什么想法吗?提前谢谢

共有1个答案

董权
2023-03-14

我不确定到底是什么问题,但我在本地工作时发布了这篇文章。将代码移动到实时服务器上,问题消失了。。。

 类似资料:
  • 我正在Spring controller中努力实现多部分文件上传。我读过很多问题,谷歌,但似乎什么都不管用。 我明白了 我的BE控制器: FE,angularJS: HTML: 还有应用程序。属性包括: 更新: 当我按照@Byeon0gam的建议从我的控制器中删除@RequestParam时,我不再会遇到这个错误,但是我的文件在控制器中是空的。虽然在FE服务中,如我所见,它不是空的:

  • 我试图创建一个页面,用户可以张贴图像及其细节。现在,当我测试来自postman的spring boot服务时,我能够成功地在服务中获取文件。当我试图从angular5中做同样的事情时,多部分文件在服务中没有被识别,并且总是得到空数组。 我的角服务代码如下 } 我已经尝试添加标头,如multipart/form-data,并将其设置为un定义。无论哪种方式,我都收到了错误。在发布到这里之前,我已经广

  • 我正在使用这个音频记录和视频文件,它是工作的,但我想用OKHTTP取代它。我没弄明白。有人能帮我一下吗?

  • 我正在使用Spring Boot 1.2。我想上传一个原始二进制文件到控制器。文件大小可能很大,因此我不想将整个请求保存在内存中,而是流式传输文件,事实上,文件是在传输开始时生成的,因此客户端甚至不知道文件的大小。我在这里看到了一个如何使用多部分编码的文件上传进行类似操作的示例。然而,我不想要一个多部分编码的上传,只是一个原始的字节流。我似乎找不到在Spring处理这个用例的方法。

  • 在Android中使用OKHTTP以多部分方式上传单个大文件(更具体地说,上传到s3)时,我有什么选择?

  • 我在使用Spring rest和react和axios上传文件时遇到了一些问题,我的后端代码是 我可以使用邮递员上传文件,但是通过使用axio,我得到了一些错误。 嵌套异常是组织 以下是我的代码: 同样,如果我把 我也犯了错误,谁能告诉我我犯了什么错误吗?