如何在MATLAB中使用urlread()将图像发布到服务器

如何在MATLAB中使用urlread()将图像发布到服务器,url,matlab,post,file-upload,Url,Matlab,Post,File Upload,我想使用face.com人脸检测API(将图像发送到服务器并返回xml字符串结果) 我使用urlread(),它无法上载图像文件 守则: fid = fopen('T000.jpg'); im = fread(fid,Inf,'*uint8'); fclose(fid); urlread('http://api.face.com/faces/detect.xml','post',... {'api_key' , MY_CODE,... 'api_s

我想使用face.com人脸检测API(将图像发送到服务器并返回xml字符串结果)

我使用
urlread()
,它无法上载图像文件

守则:

fid = fopen('T000.jpg');
im  = fread(fid,Inf,'*uint8');
fclose(fid);

urlread('http://api.face.com/faces/detect.xml','post',...
        {'api_key'      , MY_CODE,...
         'api_secret'   , MY_SECRET,...
         'detector'     , 'Normal',...
         'attributes'   , 'all',...
         'file'         , im}) 
但它返回一个错误,因为MATLAB试图将图像编码为url

注意:当我在网络上使用图像时,它确实起作用(因为没有上传任何文件)


不幸的是,您不能使用内置函数
urlread
。它仅使用
application/x-www-form-urlencoded
进行POST请求和
multipart/form data
上传jpeg文件。您必须查看第三方工具

或者,您可以尝试编写自己修改的urlread函数。但是,Matlab没有比urlread更细粒度的访问权限。要解决这个问题,您可以使用。这些文档甚至包含一个。基本上,您可以在Matlab解释器中创建Java对象并调用它们的方法。以下是Matlab内部的Java示例:

string_builder = java.lang.StringBuilder('Bar'); %new is not used
string_builder.setCharAt(2, 'z');
java_string = string_builder.toString.toLowerCase; %brackets are optional
matlab_char = char(java_string); %matlab_char == 'baz'

祝你好运。

我找到了答案。urlread()的替代实现。

Mathworks创建了
webread
webwrite
,以在较新版本的Matlab中解决此问题。

我编辑了问题的第一个单词,从“热”到“如何”。如果事实上,这不是一个如何做某件事的问题,而是一个你渴望或迫于压力去做某件事的声明,我向你道歉。
string_builder = java.lang.StringBuilder('Bar'); %new is not used
string_builder.setCharAt(2, 'z');
java_string = string_builder.toString.toLowerCase; %brackets are optional
matlab_char = char(java_string); %matlab_char == 'baz'