使用file_get_contents获取存储的内容

时间:2015-11-26 02:19:27

标签: php

好吧所以一切都得到了妥善保存,但我怎样才能获得我正在保存的文件的网址?

$songs = file_get_contents('https://example.com/tracks/'.$id.'/');
file_put_contents('./tmp/' . stripslashes(htmlspecialchars($songTitle)) . '.mp3', $songs);

没有手动获取每个网址,请注意我是一个新的开发人员仍在学习..但是我不能回复到<a href=""></a> ??

修改:' . stripslashes(htmlspecialchars($songTitle)) . '这只是我们正在下载的文件的名称,对该字符串没有任何重要意义。

2 个答案:

答案 0 :(得分:0)

你不能,至少不能直接,因为它不能那样工作:文件系统不一定转换为URL。

例如,在您的情况下,您将文件保存到tmp目录中。我怀疑该目录是否可以以任何方式访问外部世界,即它具有您可以在浏览器中访问的公共URL。

答案 1 :(得分:0)

这取决于您的设置,但如果您的脚本位于外部可访问的位置并且您信任__FILE__客户端定义的字段,则可以使用$_SERVERtmp来完成您的操作想。

以下代码假定:

  • 您的服务器不在HTTPS上;
  • 子目录tmp中的文件可以在外部访问;
  • 您可以写入子目录$_SERVER['HTTP_HOST']
  • $_SERVER['REQUEST_URI']// This is the only thing you need to set to your taste. $dest_rel_path = 'tmp/' . stripslashes(htmlspecialchars($songTitle)) . '.mp3'; // This is the final file path in your filesystem. // `dirname(__FILE__)` can be replaced with __DIR__ in PHP >= 5.3.0 // and the str_replace() part makes the code portable to Windows. $filesystem_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $dest_rel_path); $songs = file_get_contents('https://example.com/tracks/'.$id.'/'); file_put_contents($filesystem_path, $songs); // This takes the URL that the user requested and replaces the // part after the last '/' with our new .mp3 location. $req_uri = $_SERVER['REQUEST_URI']; $url_path = substr($req_uri, 0, 1 + strrpos($req_uri, '/')) . $dest_rel_path; $url = 'http://' . $_SERVER['HTTP_HOST'] . $url_path; echo "<a href=\"$url\">This is my link to $songTitle!</a>"; 可以“信任”。

试试这个:

-U