在 Linux 中下载文件时文件位置未知

在 Linux 中下载文件时文件位置未知

抱歉,如果不清楚的话,但我正在尝试设置一个下载文件的脚本。目前,我下载文件的方法是单击如下链接:

https://www.URL.com/view?downloadFile=AcctItemFiles\1234567890.txt

我尝试使用wget命令,但显然没有用,因为该链接不是实际的文件位置。任何关于如何找出实际文件位置或如何使用该链接下载文件的想法都会有所帮助。

答案1

wget应该不会有问题,因为它可以很好地在这样的 URL 上执行 GET 命令。我能想到的您可能遇到的唯一问题是:

  • \是一个特殊的 shell 字符,你需要将 URL 放在引号中,以防止 shell 转换\11。更好的方法是,将转义\字符用作%5C
  • wget 会命名文件view?downloadFile=AcctItemFiles\1234567890.txt,而不是像 Web 浏览器那样命名。可以使用选项-O filename强制将所有下载的数据写入指定的文件名,例如

(有趣...代码块不能跟在项目符号后面)

wget -O 1234567890.txt "http://www.whatever.com/view?downloadFile=AcctItemFiles\1234567890.txt" 

或者,使用--content-disposition选项告诉它使用服务器在标头中提供的文件名进行保存(阅读并理解有关它有缺陷以及需要两个请求的警告。如果目标脚本不支持 HEAD 命令,请不要使用此选项)或者,使用而curl -O -J ...不是 wget,其中-O -J一起指示它从标头读取输出文件名。文档没有说 curl 需要两个请求,但是 curl最近有一个漏洞由于信任无效的文件名,因此“有缺陷”可能仍然适用。

答案2

尝试使用带有‘-L’标志的 curl 而不是 wget。

   -L/--location
          (HTTP/HTTPS) If the server reports that the requested page has moved to a   different location (indicated with a Location: header and a 3XX response code), this  option  will
          make  curl  redo the request on the new place.

Curl 和 wget 相互补充。

相关内容