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

perl中的多部分编码文件内容

谷梁博易
2023-03-14

我想从Perl向REST API服务发出一个POST请求。作为POST表单参数,服务需要一个多部分编码的文件。

use HTTP::Request::Common;
use LWP::UserAgent;

my $file="/path/to/file";
my $REST_URL = "/path/to/REST/service";
my $ua = LWP::UserAgent->new;
my $response= $ua->post($REST_URL, ['file' => $file]);

我写了上面的代码。但是显然REST服务器无法理解POST请求,因为我只将文件路径发送到REST服务,而不是多部分编码的文件内容。有人能告诉我如何使文件多部分编码并将其作为POST请求发送到REST服务,而REST服务期望多部分编码的文件作为表单参数吗?

作为补充说明,我实际上想编写与下面的Python代码等效的Perl代码。

REST_URL = "/path/to/REST/service"
SAMPLE_FILE = "/path/to/file"

with open(SAMPLE_FILE, "rb") as sample:
   multipart_file = {"file": ("temp_file_name", sample)}
   request = requests.post(REST_URL, files=multipart_file)

但是,由于我对Python的了解有限,我不理解multipart_file={“file”:(“temp_file_name”,sample)}这一行。我想,解释这条线到底在做什么也会对我有所帮助。

共有1个答案

长孙景焕
2023-03-14

如模块文档中所述HTTP::Request::Common

$ua->post($REST_URL,
  Content_Type => 'form-data',
  Content      => [
    file => [$file]
  ],
);
 类似资料:
  • 我正在寻找一种方法来解析多部分/可选电子邮件的正文部分。目前,我有一个使用Email::Mime模块的perl脚本,它可以正确解析text/plain和text/html。尽管我的问题是,当我解析一个多部分/可选电子邮件时,$part- PERL代码 来源

  • 需要一个SpringRest服务,需要将输入作为JSON内容和多个多部分文件。

  • 我使用Eclipse和Glassfish从jsp/servlet中获取无效字符。 如果我输入“Pêche”,我会得到“Pêches”。这就是编码问题。我试了几次思考,但都没用。 我尝试添加过滤器(JSP中的编码问题) 我尝试在web.xml中添加jsp属性(在glassfish 3.1中无法将字符集从ISO-8859-1更改为UTF-8) 我试图改变字符编码我自己在java代码request.s

  • 我有一个自定义的java控制台应用程序,我正在编写该应用程序,以将非二进制文件上载到我拥有的java应用程序服务器。它正在执行HTTPS多部分/表单数据POST,并将文件发送到RESTAPI。虽然它对小文件非常有效,但我希望将GZIP内容编码应用于post请求,以便更有效地处理大文件。 是否有一个JAVA库可以用来gzip文章,包括文件内容,然后在另一边解压?我希望避免先压缩文件,而是依靠HTTP

  • 令牌检索都解决了。 我已经读过很多关于这个的文章,并且已经确保在有效负载之前有两个n。任何指示将非常感谢! 谢谢!

  • 我正在尝试编写一个SpringMVC方法,它可以接收多部分/表单或传输编码的分块文件上传。我可以编写一个单独的方法来处理每种类型,但我希望使用相同的方法,以便使用相同的REST POST uri,例如: 以下是我迄今为止最好的尝试: 使用上述方法,我可以上传一个多部分文件,但如果我上传一个分块文件,我会从spring得到一个异常,它说: 如果我删除MultipartFile请求参数,它非常适合分块