2013-07-09 12 views
14

मैं गो में एक HTTP सर्वर शुरू करने की कोशिश कर रहा हूं जो मेरे अपने हैंडलर का उपयोग करके अपने डेटा की सेवा करेगा, लेकिन साथ ही मैं फाइलों की सेवा के लिए डिफ़ॉल्ट http FileServer का उपयोग करना चाहता हूं।कुछ अन्य HTTP हैंडलर के साथ फ़ाइलसेवर हैंडलर

मुझे फ़ाइल सर्वर के हैंडलर को URL उपनिर्देशिका में काम करने में समस्याएं आ रही हैं।

इस कोड काम कर रहा है नहीं:

package main 

import (
     "fmt" 
     "log" 
     "net/http" 
) 

func main() { 
     http.Handle("/files/", http.FileServer(http.Dir("."))) 
     http.HandleFunc("/hello", myhandler) 

     err := http.ListenAndServe(":1234", nil) 
     if err != nil { 
       log.Fatal("Error listening: ", err) 
     } 
} 

func myhandler(w http.ResponseWriter, req *http.Request) { 
     fmt.Fprintln(w, "Hello!") 
} 

मैं स्थानीय होस्ट में स्थानीय निर्देशिका को खोजने के लिए उम्मीद कर रहा था: 1234/फ़ाइलें/लेकिन यह एक 404 page not found देता है।

हालांकि, अगर मैं/करने के लिए fileserver के हैंडलर पता बदलने के लिए, यह काम करता है:

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

लेकिन अब मेरी फ़ाइलें सुलभ और रूट निर्देशिका में दिखाई दे रहे हैं।

मैं इसे रूट से भिन्न URL से फ़ाइलों को कैसे सेवा दे सकता हूं?

http.Handle("/files/", http.StripPrefix("/files/", http.FileServer(http.Dir(".")))) 

यहाँ देखें:

उत्तर

संबंधित मुद्दे