2016-07-11 8 views
8

मैं स्विफ्ट और वाष्प ढांचे का उपयोग कर सर्वर साइड एप्लिकेशन लिखने की कोशिश कर रहा हूं। हालांकि, मैं नहीं समझ सकता, वाष्प का उपयोग कर स्थिर फाइलों को कैसे सेवा दी जाए। उन्हें Public या Resources निर्देशिका में स्थानांतरित करने के लिए पर्याप्त नहीं है।वाष्प का उपयोग कर स्थिर फाइलों को कैसे सेवा दें?

मैं यह कैसे कर सकता हूं?

यूपीडी। मैंने उन चरणों का पालन किया जो टैनर नेल्सन ने सुझाव दिया लेकिन यह अभी भी काम नहीं करता है।

मैं अब तक क्या करने की कोशिश की:

  1. vapor build और vapor run (भाप उपकरण बॉक्स v0.6.1 का उपयोग)।

  2. ./build/debug/App रूट निर्देशिका से (जिसमें Package.swift शामिल है)।

  3. संपादन योजना के बाद एक्सकोड 8 बीटा में चलाएं क्योंकि टैनर नेल्सन ने सुझाव दिया था।

इस सभी मामलों में मैं त्रुटि मिलती है {"error":true,"message":"Page not found"}

मैं एक Public फ़ोल्डर के अंदर फाइल vapor_logo.png और Public/images/ फ़ोल्डर के अंदर भी एक ही फाइल की है। मैं इसका अनुरोध करने की कोशिश करता हूं और यह विफल रहता है। अनुरोध जो मैंने किए: http://localhost:8080/image/vapor_logo.png और http://localhost:8080/vapor_logo.png। हालांकि, अन्य मार्ग ठीक काम करते हैं।

यूपीडी 2. ठीक है, यह मेरी सभी गलतियों थी। सबसे पहले, मुझे लगता है कि फ़ाइल vapor_logo.png कहा जाता था, वास्तव में vapor-logo.png कहा जाता था। दूसरा, जब आप कोई अनुरोध करते हैं तो मामला मायने रखता है। मैंने फ़ाइल IMG_8235.JPG नाम से फ़ाइल का अनुरोध करने का भी प्रयास किया लेकिन फ़ाइल एक्सटेंशन को jpg के रूप में लिखें, इसलिए एक त्रुटि मिली।

तो, बस रिकैक करने के लिए: यदि आप मेरे जैसा ही समस्या अनुभव करते हैं, तो टैनर नेल्सन के उत्तर का पालन करें और सुनिश्चित करें कि अनुरोधित फ़ाइल का नाम बिल्कुल डिस्क पर फ़ाइल का मिलान नाम। Docs से

उत्तर

13

भाप फ़ोल्डर संरचना:

. 
├── App 
│ └── main.swift 
│ └── ... 
├── Public 
├── Resources 
└── Package.swift 

Public फ़ोल्डर में किसी फ़ाइल डिफ़ॉल्ट रूप से परोसा जाएगा अगर कोई मार्गों कि पंजीकृत किया गया फ़ाइल नाम के साथ संघर्ष।

उदाहरण के लिए

, यदि आप एक फ़ाइल Public/foo.png और निम्नलिखित main.swift फ़ाइल है:

import Vapor 

let drop = Droplet() 

drop.get("welcome") { request in 
    return "Hello, world" 
} 

drop.serve() 

localhost/welcome करने के लिए एक अनुरोध "Hello, world" वापसी होगी और localhost/foo.png के लिए एक अनुरोध foo.png लौट आते हैं।

यदि यह ठीक से काम नहीं कर रहा है, तो संभवतः आपकी कार्य निर्देशिका ठीक से कॉन्फ़िगर नहीं की गई है। यह तब हो सकता है जब आप एक्सकोड से अपनी प्रोजेक्ट चला रहे हों या आप इसे उस फ़ोल्डर से कमांड लाइन से चला रहे हैं जो प्रोजेक्ट की मूल निर्देशिका नहीं है।

एक्सकोड को ठीक करने के लिए, Schemes > App > Edit Scheme > Run > Options > Working Directory > [x] Use Custom Working Directory पर जाएं और सुनिश्चित करें कि निर्देशिका आपके प्रोजेक्ट की रूट पर सेट है (जहां पैकेज.swift रहता है)। जब कमांड लाइन से चल

Xcode working directory

ठीक करने के लिए, सुनिश्चित करें कि आप रूट निर्देशिका से आवेदन चला रहे हैं। यानी, रन कमांड .build/debug/App जैसा दिखना चाहिए क्योंकि .build फ़ोल्डर रूट निर्देशिका में स्थित है।

+0

उत्तर के लिए धन्यवाद! हालांकि, यह अभी भी काम नहीं कर रहा है। मैंने मूल प्रश्न के लिए एक अद्यतन किया। –

+0

अब काम करता है, धन्यवाद –

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