我可以上传一张图片,但我无法使用API创建包含多张图片的photoset。
文件说: Paramater:Array(URL编码的二进制内容)
一个或多个图像文件(多次提交以创建幻灯片)
有谁知道怎么做?
答案 0 :(得分:21)
这是一个痛苦的过程,但我在研究python code Tumblr posted后想出来了。简而言之,它需要获取照片的十六进制,然后进行一些替换。
我创建了一个简单的iOS / iPad / iPhone project on GitHub that uploads multiple photos to photosets using the Tumblr API,主要基于ASIHTTPRequest+OAuth project。它在我的有限测试中工作到目前为止 - 随意使用它并让我知道它是怎么回事。
答案 1 :(得分:1)
新的PhotoUpLink for iPhone上传真正的Tumblr照片。可以在http://uplink.to/5o <{3}}示例照片集中从App Store免费下载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;
}
答案 2 :(得分:0)
我也遇到了麻烦。这是最终为我工作的python中的一个要点: https://gist.github.com/charlesbrandt/11eadaec114288d621fa
诀窍是所有照片都必须添加到您的帖子参数中,数据[#]&#39;钥匙。 (&#39;数据[0]&#39;,&#39;数据[1]&#39;等)
答案 3 :(得分:0)
这非常简单,如果您只有一个图片需要上传,请使用'source'参数,如果有多个图片,请将参数切换为'data'并使用图片网址数组进行初始化。对于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);