我可以上传一张图片,但无法使用API创建包含多个图片的photoset。Tumblr API - 如何将多个图像上传到Photoset
文件说: Paramater:阵列(URL编码的二进制内容)
一个或多个图像文件(提交多次以创建幻灯片)
有谁知道怎么办呢?
我可以上传一张图片,但无法使用API创建包含多个图片的photoset。Tumblr API - 如何将多个图像上传到Photoset
文件说: Paramater:阵列(URL编码的二进制内容)
一个或多个图像文件(提交多次以创建幻灯片)
有谁知道怎么办呢?
这是一个痛苦的过程,但我在研究python code Tumblr posted后发现了它。总之,它需要获取照片的十六进制,然后做一些替换。
我创建了一个简单的iOS/iPad/iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr API,主要基于ASIHTTPRequest+OAuth project。它在我有限的测试中工作至今 - 随时可以使用它并让我知道它是如何发生的。
@miloshes - 这是否回答你的问题?如果是这样,标记为答案和/或upvote将不胜感激。如果不是,你用什么编程语言来做到这一点? –
很棒的工作,像一个魅力工作;) – ferostar
@VictorVanHee,出色的工作,官方的tumblr API文档真的让我坚持了几个小时。 –
适用于iPhone的新PhotoUpLink会上传真正的Tumblr照片。它可以从App Store免费下载http://uplink.to/5ohttp://photouplink.tumblr.com
Tumblr上传者基于@ VictorVanHee的史诗。我没有通过切换到直下NSData的stringWithoutURLEncoding子程序优化代码:
- (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;
}
我是有这个麻烦了。这里是一个python的结果为我工作的要点: https://gist.github.com/charlesbrandt/11eadaec114288d621fa
诀窍是所有的照片必须添加到您的发布参数与'data [#]'键。 ('data [0]','data [1]'等)
这非常简单,如果您只有一张图片需要上传,使用'source'参数,如果有多张图片,请将参数切换为'数据'并用对图像网址进行初始化。对于PHP tumblr客户端,下面的代码片段,可以用:
$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);
是的,我这个苦苦挣扎。不知道它们与URL编码的二进制数据的数组意味着什么。 – Arvin
@爱我开始讨论tumblr小组。他们说这是固定的,但我仍然无法使其工作.. https://groups.google.com/group/tumblr-api/browse_thread/thread/d32e0e6f9028960b/6865aa7b5eb3241d?lnk=gst&q=multiple+photos#6865aa7b5eb3241d – miloshes
他们在https://gist.github.com/1198576上发布了一个python示例 - 但我仍然无法在Objective C中找到它(使用ASIFormDataRequest + OAuth.h)。我可以上传单个文件,但不能添加多个文件。上传表单数据中的文件时,我不认为ASIHTTPRequest的“url编码二进制数据” - 这是如何完成的? –