如何在邮递员 RESTful Web 服务中发送多个文件?

Posted

技术标签:

【中文标题】如何在邮递员 RESTful Web 服务中发送多个文件?【英文标题】:How to send multiple files in postman ReSTful web service? 【发布时间】:2015-03-26 22:37:18 【问题描述】:

我正在使用 ReSTful 网络服务。我正在使用一个函数 (php) 上传多张照片。

我使用$num_files = count($_FILES['myfile']['name']) 来计算要上传的文件数,但这总是1:

当我打印 $_FILES['myfile']['name']$_FILES 时,它会返回最后一张图片。

我是否应该进行任何设置以一次发送多个文件?

<?php
if($result=="success")

    $num_files = count($_FILES['myfile']['name']);
    Zend_Debug::dump($num_files);
    die;
    for( $i=0; $i < $num_files; $i++ )
    
        $name = $_FILES["myfile"]["name"][$i];
        $temp_path = $_FILES['myfile']['tmp_name'][$i];
        $image_name = Helper_common::getUniqueNameForFile( $name );

        echo $image_name;
        die;
        // Set the upload folder path
        $target_path = $originalDirecory."/";


        // Set upload image path
        $image_upload_path = $target_path.$image_name;
        move_uploaded_file($temp_path, $image_upload_path);

        //if(move_uploaded_file($temp_path, $image_upload_path))
        //
        // Set 800*800 popup thumbnail...
        // Set popup directory...
        $thumbnail_directory=$popUpDirectory."/";
        // Set thumbnail name...
        $thumb_name1=$thumbnail_directory.'thumbnail_'.$image_name;
        // Set width and height of the thumbnail...
        $thumb_width=800;
        $thumb_height=800;
        $thumb1=Helper_common::generateThumbnail($image_upload_path, $thumb_name1, $thumb_width, $thumb_height);

        //if($thumb)
        //
            // Set 435*333 thumbnail...
            // Set thumbnail directory...
            $thumbnail_directory=$wallDirecory."/";
            // Set thumbnail name...
            $thumb_name2=$thumbnail_directory.'thumbnail_'.$image_name;
            // Set width and height of the thumbnail...
            $thumb_width=435;
            $thumb_height=435;
            $thumb2=Helper_common::generateThumbnail($image_upload_path, $thumb_name2, $thumb_width, $thumb_height);

            //if($thumb)
            //
                // Set 176*176 thumbnail...
                // Set thumbnail directory...
                $thumbnail_directory=$galleryDirectory."/";
                // Set thumbnail name...
                $thumb_name3=$thumbnail_directory.'thumbnail_'.$image_name;
                // Set width and height of the thumbnail...
                $thumb_width=176;
                $thumb_height=176;
                $thumb_smart_resize_3 = Helper_ImageResizer::smart_resize_image($image_upload_path, NULL, $thumb_width, $thumb_height, false, $thumb_name3, false);
                $thumb3=Helper_common::generateThumbnail($image_upload_path, $thumb_name3, $thumb_width, $thumb_height);
            //if($thumb)
            //
                $profile_thumb=$thumb3;
                // Set 131*131 thumbnail...
                // Set thumbnail directory....
                $thumbnail_directory = $thumbnailsDirectory."/";
                // Set thumbnail name....
                $thumb_name4 = $thumbnail_directory.'thumbnail_'.$image_name;
                $thumb_width=131;
                $thumb_height=131;
                $thumb_smart_resize_4=Helper_ImageResizer::smart_resize_image($image_upload_path, NULL, $thumb_width, $thumb_height, false, $thumb_name4, false);
                $thumb4=Helper_common::generateThumbnail($image_upload_path, $thumb_name4, $thumb_width, $thumb_height);

                

【问题讨论】:

大括号不完整,能否请您发布该部分的完整代码 【参考方案1】:

我找到了解决方案。 我需要使 myfile 成为这样的数组: 我的文件[] :)

【讨论】:

拯救我的一天,非常感谢 您必须用 [ ] 提及的任何数据数组,在您的情况下,您必须通过数组 [ ] 发送多个文件,就像在邮递员中一样,您必须在关键参数 myfile[ ] 也为我工作,谢谢! 我猜它不再需要或自动添加。至少在我的情况下它可以工作。 你太棒了。这是必填项【参考方案2】:

您需要在参数中添加 方括号 [] 符号。看下图。我添加 file[] 以从邮递员上传多张图片。

【讨论】:

【参考方案3】:

您可以使用相同的键简单地添加多行,然后邮递员将它们转换为数组。 key 后缀不用加 []。

请求

回应

如果你有一个数组objects需要传递,那么遵循下面的模式

【讨论】:

这是正确答案。 [] 只是来自 PHP 的人工制品,并非所有语言的标准【参考方案4】:

2020 年邮递员更新

您不需要添加[ ],只需输入参数名称并选择文件即可。

【讨论】:

适用于2021版本 您没有,但您只会在后端获得一个文件。第一个,可能。 嗯不,你得到了所有的【参考方案5】:

是的,postman 的上一个版本更新错误。

但是,你可以下载 postman 的 chrome 扩展并用它发送多个文件,它仍然可以在那里工作。

编辑:我现在刚刚检查过,他们把它带回来了,但是如果你用铬版本制作文件,你必须重新输入文件的键值。

但现在它工作正常。

看图

【讨论】:

以上是关于如何在邮递员 RESTful Web 服务中发送多个文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在邮递员的同一请求中发送多部分/表单数据和嵌套 json?

RESTful Web 服务中的文件下载

如何使用 Jersey API 从 RESTful Web 服务发送和接收 JSON 数据

Restful WCF IIS 7.5 405 方法不允许间歇

如何响应 RESTful Web 服务中的备用 URI

如何将两个不同的对象传递给邮递员中的 POST 请求以测试 RESTful API?