标签: fileserver

http.FileServer 响应错误的 MIME “Content-Type”

我正在使用 http.FileServer 来提供 mp3 文件的目录,然后我的模板src在 javascript 中。但是,响应使用Content-Type text/html代替audio/mpeg。如何设置 FileServer 响应的 mime 类型,我看到了这个问题Setting the 'charset' property on the Content-Type header in the golang HTTP FileServer,但我仍然不确定如何覆盖 mime 类型。

我的代码如下所示:

fs := http.FileServer(http.Dir(dir))
http.Handle("/media", http.StripPrefix("/media", fs))
http.HandleFunc("/", p.playlistHandler)
http.ListenAndServe(":5177", nil)
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

HTTP "Content-Type" of "text/html" is not supported. Load of media resource http://localhost:5177/media/sample1.mp3 failed.
Run Code Online (Sandbox Code Playgroud)

javascript mime content-type fileserver go

6
推荐指数
1
解决办法
3386
查看次数

强制浏览器使用部分内容下载大文件

我的服务器托管要下载的大文件(文件可能存储在不同的文件服务器中,但不会存储在 Web 服务器中)。我的目的是让浏览器使用部分下载,以便网络服务器可以获取文件的一小部分而不是整个文件。

但是浏览器(chrome 66)发送的第一个 HTTP GET 请求没有Range. 所以我必须回复Status: 200 OK

要求:

GET http://fakefile/falke HTTP/1.1
Host: fakefile
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Run Code Online (Sandbox Code Playgroud)

响应路径 #1:

HTTP/1.1 200 OK
Date: Tue, 12 Jun 2018 04:58:58 GMT
Content-Type: text/plain
Content-Length: 8205926
Connection: keep-alive
Content-Range: bytes 0-1048575/8205926
Content-Disposition: attachment; filename="301050.11051.input.txt"
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)

Content-Length是整个文件的大小,Content-Range是块的大小。

结果:浏览器认为 chunk 是整个文件,不再有 HTTP range …

http download fileserver

6
推荐指数
0
解决办法
1236
查看次数

使用Filezilla上传时如何查找文件的URL

亲爱的Stackoverflow用户,

我想知道如何在文件上传到文件服务器后查找文件的URL,以便我可以在ex中查看它.苹果浏览器.

ftp url filezilla fileserver

5
推荐指数
1
解决办法
8848
查看次数

在 Go 中使用 http.FileServer 禁用目录列表的好方法

如果你在 Go 中使用 http.FileServer 像:

func main() {
    port := flag.String("p", "8100", "port to serve on")
    directory := flag.String("d", ".", "the directory of static file to host")
    flag.Parse()

    http.Handle("/", http.FileServer(http.Dir(*directory)))

    log.Printf("Serving %s on HTTP port: %s\n", *directory, *port)
    log.Fatal(http.ListenAndServe(":"+*port, nil))
}
Run Code Online (Sandbox Code Playgroud)

然后访问一个目录会给你一个文件列表。通常这对于 Web 服务是禁用的,而是以 404 响应,我也希望这种行为。

http.FileServer 没有此 AFAIK 的选项,我在这里看到了解决此问题的建议方法https://groups.google.com/forum/#!topic/golang-nuts/bStLPdIVM6w他们所做的是包装 http.FileSystem键入并实现自己的 Open 方法。但是,当路径是目录时,这不会给出 404,它只会给出一个空白页面,并且不清楚如何修改它以适应这一点。这就是他们所做的:

type justFilesFilesystem struct {
    fs http.FileSystem
}

func (fs justFilesFilesystem) Open(name string) (http.File, error) {
    f, err := fs.fs.Open(name)
    if err != nil { …
Run Code Online (Sandbox Code Playgroud)

http fileserver go

5
推荐指数
1
解决办法
2266
查看次数

Go http.FileServer 出现意外的 404 错误

我正在尝试运行两台文件服务器,其中一台index.htmlui文件夹中提供服务,另一台提供其他一些静态文件,如下面的代码:

package main

import (
    "log"
    "net/http"
)

func main() {
    srv := http.NewServeMux()

    // File server 1
    uiServer := http.FileServer(http.Dir("./ui"))
    srv.Handle("/", uiServer)

    // File server 2
    staticFilesServer := http.FileServer(http.Dir("./files"))
    srv.Handle("/files", staticFilesServer)

    if err := http.ListenAndServe(":8080", srv); err != nil {
        log.Fatal(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

两个 fileServer 对象的定义方式完全相同,第一个 (uiServer) 工作正常,但第二个 (staticFilesServer on localhost:8080/files) 给我 404。


我缩小了问题范围并删除了第一个(工作文件服务器),就像下面的代码一样:

package main

import (
    "log"
    "net/http"
)

func main() {
    srv := http.NewServeMux()

    staticFilesServer := http.FileServer(http.Dir("./files"))
    srv.Handle("/files", staticFilesServer)

    if err …
Run Code Online (Sandbox Code Playgroud)

http fileserver go

5
推荐指数
1
解决办法
992
查看次数

考虑在何处存储文档 - 在文件服务器上还是在DB中?

我有一个关于上传到我的网站的文件的设计决定:我可以将它们存储在我的文件服务器上,或者我可以将它们存储在我的数据库中的blob(MSSQL 2005).如果它对设计决定有任何影响,这些文件是保密的,必须有一定程度的保护.

我想到的考虑因素是:

  1. 存储在文件服务器上会使HUUUUUUUGE文件数量全部转储到一个目录中,因此访问速度较慢,除非我能为目录树结构计算出合理的语义定义
  2. OTOH,我猜测文件服务器可以比DB更好地处理压缩......或者我错了?
  3. 我的直觉告诉我,DB的安全性比文件服务器强,但我不确定这是否一定是真的.
  4. 不知道我的数据库中有多TB的blob会影响性能.

我非常感谢这里的一些建议.谢谢!

sql-server blob fileserver

4
推荐指数
1
解决办法
919
查看次数

为什么图像被损坏使用PHP上传到FTP服务器?

我正在将图像上传到特定文件夹位置的FTP服务器.代码工作正常.但是当我查看上传的图像时,我得到了无法打开的损坏的图像文件.对于少数图像文件,文件中的图像被破坏.我不明白为什么会这样.

以下是我尝试的可行代码:

      if(!empty($_FILES['student_image']['name'])) {
        $ext = pathinfo($_FILES['student_image']['name'], PATHINFO_EXTENSION);     

        $student_image_name = 'student_'.$student_data['student_id'].'.'.$ext;

        $ftp_server="56.215.30.91"; 
        $ftp_user_name="myservercreds"; 
        $ftp_user_pass="MyServerCreds";

        $file = $_FILES['student_image']['tmp_name'];//file to be uploaded to FTP server 
        $remote_file = "/Students/".$student_image_name;        


        // set up basic connection 
        $conn_id = ftp_connect($ftp_server);  

        // login with username and password 
        $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

        if($login_result) {
          if(!is_dir('ftp://myservercreds:MyServerCreds@56.215.30.91/Students')) {
            ftp_mkdir($conn_id, "/Students");
            ftp_chmod($conn_id, 0777, '/Students');
          }

          if(!file_exists("/Students/".$student_image_name))
            $file_upload_status = ftp_put($conn_id, $remote_file, $file, FTP_ASCII);                    
        }  

    // close the connection 
    ftp_close($conn_id);
  }
Run Code Online (Sandbox Code Playgroud)

我不知道在完成上传后上传到FTP服务器时图像文件何时被破坏.

php ftp file-upload fileserver remote-server

4
推荐指数
1
解决办法
1321
查看次数

如何从 SimpleHTTPServer 获取客户端 IP

使用SimpleHTTPServerPython 中的模块构建一个简单的文件服务器,但是我在尝试从连接的客户端获取 IP 时遇到了问题。这是我所拥有的..

import SimpleHTTPServer

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", 8080), Handler)

print "Serving local directory"

while True:
    httpd.handle_request()
    print Handler.client_address[0]
Run Code Online (Sandbox Code Playgroud)

当客户端连接时,我得到..

AttributeError:SimpleHTTPRequestHandler 类没有属性“client_address”

我知道这是因为我还没有实例化这个类,但是有没有另一种方法可以从客户端获取 IP 而不必创建处理程序实例?建立连接时,客户端的 IP 会输出到控制台,我只需要一种在脚本中获取该 IP 的方法。

谢谢!

python ip http fileserver simplehttpserver

3
推荐指数
1
解决办法
7881
查看次数

golang http.FileServer() 中列出错误链接的目录

http.FileServer在 Go 中使用将一些静态文件提供到目录中。

这是我使用 mux 作为路由器来映射它的方式:

r.PathPrefix("/download").Handler(http.StripPrefix("/download", http.FileServer(http.Dir(dirPath)))).Methods("GET")
Run Code Online (Sandbox Code Playgroud)

其中dirPath是我的文件系统中目录的绝对路径。

现在,当使用 localhost:8080/download 询问目录列表时,它似乎工作正常,因为它返回这样的页面

<pre>
<a href="a.xml">a.xml</a>
<a href="b.xml">b.zip</a>
</pre>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些链接已损坏,因为我希望将它们映射到例如localhost:8080/download/a.xml,而文件服务器将它们映射到localhost:8080/a.xml

如何使我的目录列表/download在链接中保留路径前缀?

url http fileserver go

3
推荐指数
1
解决办法
2103
查看次数

从我的服务器下载 *.csv

我是 Golang 新手,现在我正在编写解析某些页面的小应用程序。我得到索引页:

<form action="/" method='POST'>
    Enter credentials:<br>
    Login: <input type="text" name="login" >
    <br>
    Password: <input type="password" name="password" >
    <br>
    Search link:<br>
    <input type="text" name="link" >
    <br>
    <input type="submit" value="Submit">
 </form> 
Run Code Online (Sandbox Code Playgroud)

因此,单击“提交”按钮后,它会进入解析页面(使用 tebeca/selenium pkg),最后将数据写入 result.csv,如下所示

func writeToCSV(users []linkedinUser) {
data := users
enc := struct2csv.New()
rows, err := enc.Marshal(data)
if err != nil {
    fmt.Printf("ERROR marshaling file, %s", err)
}
file, err := os.Create("result.csv")
if err != nil {
    fmt.Printf("ERROR creating file, %s", err)
}
defer file.Close()

writer := csv.NewWriter(file) …
Run Code Online (Sandbox Code Playgroud)

csv http fileserver go

3
推荐指数
1
解决办法
7215
查看次数