【问题标题】:How to post image to server using urlread() in MATLAB如何在 MATLAB 中使用 urlread() 将图像发布到服务器
【发布时间】:2015-12-31 07:22:47
【问题描述】:

我想使用 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('http://api.face.com/faces/detect.xml','post',...
        {'api_key'      , MY_CODE,...
         'api_secret'   , MY_SECRET,...
         'detector'     , 'Normal',...
         'attributes'   , 'all',...
         'urls'         , 'http://0.tqn.com/d/beauty/1/0/x/3/1/halle_berry_pixie.jpg'}) 

【问题讨论】:

  • 我编辑了问题的第一个词,从“热”到“如何”。如果事实上这不是如何做某事的问题,而是表明您热衷于或承受压力做某事的声明,我深表歉意。

标签: url matlab post file-upload


【解决方案1】:

很遗憾,您不能使用内置函数urlread。它仅使用application/x-www-form-urlencoded 进行POST 请求,face API 需要multipart/form-data 才能上传jpeg 文件。您将不得不查看第三方工具

或者,您可以尝试编写自己的修改后的 urlread 函数。然而,Matlab 没有比 urlread 更细粒度的访问。要解决此问题,您可以使用Java within Matlab。文档甚至包含URL example。基本上,您可以创建 Java 对象并在 Matlab 解释器中调用它们的方法。下面是一个在 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'

祝你好运。

【讨论】:

    【解决方案2】:

    我找到了答案。 urlread() on the File Exchange 的替代实现。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 2012-08-15
        相关资源
        最近更新 更多