2017-09-09 6 views
2

スラックチャンネルから次のコードで画像をダウンロードしようとしていますが、ページの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 

答えて

1

画像やその他のファイルはSlackからダウンロードできますが、直接ダウンロードすることはできません。公開URLを取得するには、最初にファイルをパブリックとしてマークする必要があります。

これはAPIメソッドfiles.sharedPublicURLで行うことができます。 permalink_publicプロパティを含むファイルオブジェクトが返されます。これは、アプリケーションでダウンロードできるURLです。

ダウンロードした後、公開URLを再度無効にすることができます。files.revokePublicURL

0

また、右headersを提供することで、ファイルをダウンロードすることができます

wget -d --header="Authorization: Bearer A_VALID_TOKEN" https://files.slack.com/files-pri/T1Q3K1TFB-F6TQMM6AG-baba978dff/download/image003.jpg 
関連する問題