【问题标题】:How do I download images form Slack, by php or wget如何通过 php 或 wget 从 Slack 下载图像
【发布时间】:2017-09-09 16:39:33
【问题描述】:

我正在尝试通过以下代码从 Slack 频道下载图像,但我只获得了页面的 html 代码。

我是在做傻事,还是他们有什么技巧让这件事变得困难?

<?php

copy('https://files.slack.com/files-tmb/T1Q3K1TFB-F6TQMM6AG-baba978dff/image003_480.jpg', 'file.jpeg');

echo '<img src="file.jpeg">';
echo '<hr>';

//Get the file
$content = file_get_contents("https://files.slack.com/files-tmb/T1Q3K1TFB-F6TQMM6AG-baba978dff/image003_480.jpg");

//Store in the filesystem.
$fp = fopen("image.jpg", "w");
fwrite($fp, $content);
fclose($fp);
echo '<img src="image.jpg">';
echo '<hr>';

$url_to_image
 = 'https://files.slack.com/files-tmb/T1Q3K1TFB-F6TQMM6AG-baba978dff/image003_480.jpg';

$ch = curl_init($url_to_image);

$my_save_dir = 'images/';
$filename = basename($url_to_image);
$complete_save_loc = $my_save_dir . $filename;

$fp = fopen($complete_save_loc, 'wb');

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
echo '<img src="'.$complete_save_loc.'">';
echo '<hr>';

echo '<hr><img src="https://files.slack.com/files-tmb/T1Q3K1TFB-F6TQMM6AG-baba978dff/image003_480.jpg">';
echo '<hr><img src="https://files.slack.com/files-tmb/T1Q3K1TFB-F6TQMM6AG-baba978dff/image003_360.jpg">';
echo '<hr><img src="https://conversazioniconmario.slack.com/files/U1Q37UCNL/F6TQMM6AG/image003.jpg">';

?>

wget 也上当了;

wget -nd -r -P /myLocalPath/images  -A jpeg,jpg,bmp,gif,png https://files.slack.com/files-tmb/T1Q3K1TFB-F6TQMM6AG-baba978dff/image003_480.jpg

【问题讨论】:

    标签: php slack slack-api


    【解决方案1】:

    您也可以通过提供权利headers来下载文件:

     wget -d --header="Authorization: Bearer A_VALID_TOKEN" https://files.slack.com/files-pri/T1Q3K1TFB-F6TQMM6AG-baba978dff/download/image003.jpg
    

    【讨论】:

    • 需要记住的重要一点:在这种情况下,A_VALID_TOKEN 代表真正的 OAuth 令牌,至少包含文件:读取范围。
    • 我刚刚意识到我忘了接受你的回答。这确实是一个很好的帮助。非常感谢。如果其他人有兴趣,也可以查看here
    【解决方案2】:

    您可以从 Slack 下载图像和其他文件,但不能直接下载。您需要先将文件标记为公开才能获取其公开 URL。

    这可以通过 API 方法 files.sharedPublicURL 来完成。它将返回一个包含 permalink_public 属性的文件对象,该属性是您可用于在您的应用中下载它的 URL。

    下载后,您可以使用files.revokePublicURL 再次撤销公共 URL。

    【讨论】:

      猜你喜欢
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      相关资源
      最近更新 更多