import UIKit
import AssetsLibrary
class ViewController : UIViewController {
//文件操作类
var manager: NSFileManager !
//保存用户文档目录
var docPath: NSURL !
override func viewDidLoad() {
super .viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//设置用户文档路径
manager = NSFileManager .defaultManager()
let urlsForDocDirectory = manager. URLsForDirectory (
NSSearchPathDirectory . DocumentDirectory ,
inDomains: NSSearchPathDomainMask . UserDomainMask )
docPath = urlsForDocDirectory[0] as ! NSURL
//设置Web服务器
let server = Server ()
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_BACKGROUND , 0), {
() -> Void in
server.addPostRequestHandler( Middleware .requestLogger( println ))
//首页请求
server. get ( "/" ) {
request, response, callback in
self .createIndexHtml()
let file = self .docPath. URLByAppendingPathComponent ( "index.html" )
let data = self .manager.contentsAtPath(file.path!)
response.body = data
callback(. Send (request, response))
}
//文件请求
server. get ( "/file" ) {
request, response, callback in
println (request.arguments)
var fileName = request.arguments[ "fileName" ]
let file = self .docPath. URLByAppendingPathComponent (fileName!)
let data = self .manager.contentsAtPath(file.path!)
response.body = data
callback(. Send (request, response))
}
//启动并监听服务器
server.startListening(port: 4000, forever: true ) {
result in
switch result {
case . Success :
println ( "Up and running" )
case . Error ( let e):
println ( "Server start failed \(e)" )
}
}
})
}
//加载用户文档下的文件,并生成index.html首页
func createIndexHtml()-> Void {
var content = "<html><meta charset=\"utf-8\"><body>"
let contentsOfPath = manager.contentsOfDirectoryAtPath(docPath.path!, error: nil )
for child in contentsOfPath!{
content = content + "<a target=‘_blank‘ href=‘/file?fileName=\(child)‘>\(child)</a><br/>"
}
content = content + "</body></html>"
createFile( "index.html" , fileBaseUrl: docPath, content:content)
}
//创建文件
func createFile(name: String ,fileBaseUrl: NSURL ,content: String ){
var error: NSErrorPointer = nil
let file = fileBaseUrl. URLByAppendingPathComponent (name)
println ( "文件: \(file)" )
let exist = manager.fileExistsAtPath(file.path!)
if !exist {
var error: NSErrorPointer = nil
manager.removeItemAtPath(file.path!, error:error)
}
let data = content.dataUsingEncoding( NSUTF8StringEncoding ,
allowLossyConversion: true )
let createSuccess = manager.createFileAtPath(file.path!,contents:data,
attributes: nil )
println ( "文件创建结果: \(createSuccess)" )
}
override func didReceiveMemoryWarning() {
super .didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
|