Браузер файлов Chrome - доступ к полному пути

Я не могу придумать способ использования этой входной строки, но если вы можете изменить ее на

str = "a=2&b=3.05&c='testing'"

(обратите внимание на одиночные кавычки), вы можете использовать функцию eval для каждого и пусть Ruby угадывает типы.

-3
задан Flimzy 17 January 2019 в 13:26
поделиться

1 ответ

Я не понимаю, почему вы захотите повторно использовать <input type="file"> или , как вы бы использовали системный браузер файлов, чтобы сделать это.

Ваше постановление проблемы было бы намного легче решить, если бы вы просто перечислили файлы, доступные в каталоге, а затем выполнили действие на основе этой информации.

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
)

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

    r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        files, err := ioutil.ReadDir(".")
        if err != nil {
            log.Fatal(err)
        }

        out := "<ul>"
        for _, f := range files {
            v := url.Values{}
            v.Add("file", f.Name())
            out += fmt.Sprintf(`<li><a href="/do?%s">%s</a></li>`, v.Encode(), f.Name())
        }
        out += "</ul>"

        w.Header().Set("Content-Type", "text/html")
        fmt.Fprintf(w, out)
    })

    r.HandleFunc("/do", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, r.URL.Query().Get("file"))
    })

    server := &http.Server{
        Addr:    ":8080",
        Handler: r,
    }

    if err := server.ListenAndServe(); err != nil {
        log.Fatal(err)
    }
}

https://play.golang.org/p/bSgm4nAUUYg

Примечание: Этот код не [ 1111] производственный сейф. Вам нужно беспокоиться о людях, которые могут получить доступ к каталогам выше, где вы находитесь .., и о всевозможных забавных вещах, связанных с обменом информацией о сервере. Но он просто призван помочь вам начать работу.

Тогда вам не нужно беспокоиться о том, что передает вам браузер, вы полностью контролируете ситуацию.

0
ответ дан syntaqx 17 January 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: