使用Delphi检查远程服务器上的文件是否存在

3

我需要使用Delphi检查服务器上是否存在一个文件。方法是向服务器发送一个请求(例如:http://www.example.com/file.txt),并检查响应的状态代码。在Delphi中该如何实现呢?


1
请查看这个问题的答案,在您的情况下,使用HEAD请求并检查响应状态码,它应该是200 - OK、3xx - 重定向或4xx错误。请参阅HTTP 1.1状态码 - Ondrej Kelle
8
使用HTTP协议无法真正检查远程服务器上的文件是否存在,只能检查URL是否有效。如果文件存在但服务器不想提供服务,可能会返回403状态码、500状态码,甚至404状态码也有可能。另一方面,仅仅因为web服务器返回200状态码,并不意味着给定名称的文件实际存在!你的测试只有在您了解HTTP服务器的配置方式时才有效! - Cosmin Prund
2个回答

8
你可以使用Delphi中的TIdHTTP类来实现(它是一种IT技术)。只需在运行时创建一个实例并使用其Head方法来检索有关服务器资源的信息。
MyIdHTTP.Head(TheURL);
ResponseCode :=  MyIdHTTP.Response.ResponseCode; // 200 = OK etc
ContentLength := MyIdHTTP.Response.ContentLength;

请注意,它不会下载整个资源,并且ContentLength中的值不能保证是正确的(例如,对于动态创建的资源)。

请注意,在某些罕见情况下,这可能需要很长很长的时间。我建议将所有这些可能失败,需要花费30到60秒的项目放在后台线程中。我还建议在每次进行Http head请求时明确指定超时时间,而不是使用默认值。这会使操作需要很长时间的事实在您的代码中更加明确和清晰。 - Warren P

1

超文本传输协议(HTTP)

你可以使用 FTP 协议来实现此目的。


这应该是一个注释。 - Damian Kozlak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接