【问题标题】:Tumblr API - how to upload multiple images to a PhotosetTumblr API - 如何将多张图片上传到 Photoset
【发布时间】:2011-07-29 20:28:13
【问题描述】:

我可以上传一张图片,但无法使用 API 创建包含多张图片的照片集。

文档说: 参数:数组(URL 编码的二进制内容)

一个或多个图像文件(多次提交以创建幻灯片)

有人知道怎么做吗?

【问题讨论】:

  • 是的,我现在正在努力解决这个问题。不确定它们对 URL 编码的二进制数据数组的含义。
  • @Arvin 我已经开始讨论 tumblr 群组。他们说它已修复,但我仍然无法使其工作.. groups.google.com/group/tumblr-api/browse_thread/thread/…
  • 他们在gist.github.com/1198576 发布了一个python 示例——但我仍然无法在Objective C 中弄清楚(使用ASIFormDataRequest+OAuth.h)。我可以上传单个文件,但不能上传多个。在表单数据中上传文件时,我认为 ASIHTTPRequest 'url 编码二进制数据' - 这是如何完成的?
  • @miloshes 嗨,你是如何上传我什至无法完成的单个文件的。任何例子都会很棒。非常感谢。

标签: image upload tumblr


【解决方案1】:

这是一个痛苦的过程,但我在研究了python code Tumblr posted 后发现了它。简而言之,它需要获取照片的十六进制数,然后进行一些替换。

我创建了一个简单的iOS / iPad / iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr API,很大程度上基于ASIHTTPRequest+OAuth project。到目前为止,它在我有限的测试中有效——请随意使用它并告诉我它是如何进行的。

【讨论】:

  • @miloses - 这回答了你的问题吗?如果是这样,请将其标记为答案和/或赞成票将不胜感激。如果不是,您使用什么编程语言来执行此操作?
  • @VictorVanHee,出色的工作,官方的 tumblr API 文档真的让我发疯了好几个小时。
  • 非常感谢。很高兴我能帮上忙。
  • @VictorVanHee 哇,我不敢相信你能成功。什么样的恶梦!我正在尝试在 javascript 中执行此操作。 stringWithoutURLEncoding 是您运行十六进制数据的函数吗?有哪些替代品?到目前为止,我有空格 -> + 和 \x -> %
  • @ggwarpig 我也不敢相信。时间太长了,我几乎记不起我做了什么。您想要的大部分内容都在github.com/vvanhee/TumblrUploadr/blob/master/… 或user1569282 的优化答案中。
【解决方案2】:

适用于 iPhone 的新 PhotoUpLink 上传真正的 Tumblr 照片集。可从 App Store 免费下载 http://uplink.to/5o 示例照片集 http://photouplink.tumblr.com

Tumblr 上传器基于@VictorVanHee 的史诗。我确实通过为 NSData stringWithoutURLEncoding 子例程切换到直接 C 来优化代码:

- (NSString *) stringWithoutURLEncoding
{
    NSString *hexDataDesc = [self description];
    hexDataDesc = [[hexDataDesc stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""];

    int hlen = [hexDataDesc length];

    NSString *hexDataDescU = [hexDataDesc uppercaseString];

    const char *hexcString = [hexDataDescU cStringUsingEncoding:NSASCIIStringEncoding];

    char *newStringC = malloc(hlen *3);
    memset(newStringC, 0, hlen *3); 

    int xC= 0, upd = 3000, value = 0;

    char *componentC = malloc(5);   // = "XX";

    componentC[2] = 0;

    const char *px = "%x"; char ptc = '%';

    for (int x=0; x<hlen; x+=2)
    {                           
        componentC[0] = hexcString[x];
        componentC[1] = hexcString[x+1];

        value = 0;
        sscanf(componentC, px, &value);
        if ((value <=46 && value >= 45) || (value <=57 && value >= 48) || (value <=90 && value >= 65) || (value == 95) || (value <=122 && value >= 97)) //48-57, 65-90, 97-122
        {  
            newStringC[xC++] = (char)value;
        }
        else
        {
            newStringC[xC++] = ptc;
            newStringC[xC++] = (char)componentC[0];
            newStringC[xC++] = (char)componentC[1];
        }
    }

    NSString *newString = [NSString stringWithCString:newStringC encoding:NSASCIIStringEncoding];
    NSString *aNewString = [newString stringByReplacingOccurrencesOfString:@"%20" withString:@"+"];

    free (newStringC);
    free (componentC);

    return aNewString;
}

【讨论】:

    【解决方案3】:

    我也遇到了这个问题。这是 python 中的要点,最终对我有用: https://gist.github.com/charlesbrandt/11eadaec114288d621fa

    诀窍是所有照片都必须添加到您的帖子参数中,并使用 'data[#]' 作为键。 (“数据[0]”、“数据[1]”等)

    【讨论】:

      【解决方案4】:

      超级简单,如果你只有一张图片要上传,使用'source'参数,如果有多张图片,将参数切换为'data'并用图片URL数组初始化.对于php tumblr客户端,可以使用如下sn -p:

      $paramsToPost = [
          'type' => 'photo',
          'tags' => 'tag1, tag2, tag2',
          'caption' => 'caption for photo(s)',
          'link' => 'http://example.com/click-through-url'
      ];
      if (is_array($imageData)) {
          $paramsToPost['data'] = $imageData;
      } else {
          $paramsToPost['source'] = $imageData;
      }
      $client = new Tumblr\API\Client($consumerKey, $consumerSecret);
      $client->setToken($token, $tokenSecret);
      $response = $client->createPost($blogName, $paramsToPost);
      

      【讨论】:

        猜你喜欢
        • 2011-02-21
        • 1970-01-01
        • 2015-01-17
        • 2021-02-27
        • 2020-09-20
        • 2020-06-24
        • 2020-07-05
        • 2021-07-02
        • 1970-01-01
        相关资源
        最近更新 更多