# Class Http_fs.http_fs

    class http_fs : ?config_pipeline:Http_client.pipeline -> unit -> ?streaming:bool -> ?tmp_directory:string -> ?tmp_prefix:string -> ?path_encoding:Netconversion.encoding -> ?enable_read_for_directories:bool -> ?enable_ftp:bool -> string -> http_stream_fs

`http_fs base_url`: Accesses the HTTP file system rooted at `base_url`.

The following access methods are supported (compare with `Netfs.stream_fs`):

- `path_encoding`: Returns the passed `path_encoding`. Paths are always encoded.
- `path_exclusions`: is just `0,0; 47,47`
- `nominal_dot_dot` is true
- `read`: is supported. All files are considered as binary. The ``Skip` flag works, and is translated to a `Range` header.
- `write`: is supported and translated to `PUT`. It is assumed that `PUT` truncates existing files, and creates new files. Note that errors are often first reported when the returned channel is closed!
- `size`: this works only if the server includes the `Content-length` header in responses to `HEAD` requests.
- `test` and `test_list`: The tests ``N`, ``E`, ``D`, ``F`, and ``S` should work. Files are never symlinks. ``R` is handled like ``E`, and ``X` is handled like ``X` (i.e. it is assumed that all files are readable, and all directories can be entered). The ``W` test is never successful.
- `remove`: is translated to a `DELETE` request.
- `readdir`: works if index pages are generated (see above)

There is no support for `rename`, `symlink`, `mkdir`, `rmdir`, and `copy`.

Options:

- `config_pipeline`: one can enable further features on the pipeline object (e.g. authentication, proxies)
- `streaming`: if true, the `read` method only reads as much data from the HTTP connection as requested by the user. This assumes that the user does not pause stream accesses for longer periods as this would risk a server timeout. Also, there is no way for the client to automatically reconnect to the HTTP server after crashes. If false (the default), files are first downloaded to a temporary file before they are made accessible as `in_obj_channel`. Streaming can also be enabled for each `read` or `write` by including ``Streaming` in the list of flags.
- `tmp_directory`: directory for temporary files
- `tmp_prefix`: file prefix for temporary files (w/o directory)
- `path_encoding`: The encoding that is used for the file names. This must match the encoding the server assumes for translating file names to hyperlinks. Unfortunately, there is no way to query the server for this. The default, ``Enc_utf8`, seems to be the de-facto standard on the web (e.g. browsers use UTF-8 when non-ASCII characters are entered in the address line).
- `enable_ftp`: This enables anonymous FTP via web proxies. In this case the `base_url` is of the form `ftp://host:port/path`. This works only if the pipeline is configured to contact a web proxy understanding FTP URLs.