后台服务器上传和下载文件

一:快速入手Perfect提供Http服务
二:开发第一个Http服务
三:MySQL接触
四:Navicat for MySQL的基本使用
五:Perfect连接MySQL数据库
六:使用域名访问Http服务
七:后台服务器上传和下载文件

上传:
官方文档
如果要使用文件上传空间,则必须选择multipart/form-data作为表单的enctype编码类型。

  • 对请求类型的过滤
  //通过判断postFileUploads的数量来判断是不是使用了multipart/form-data类型,是的话count就不为0
  if let uploads = req.postFileUploads , uploads.count > 0 {
      ......
       ///
  }
  • 文件的保存
  if let uploads = req.postFileUploads , uploads.count > 0 {
      ......

      // 创建路径用于存储已上传文件,保证指定路径有文件夹存在.路径可以自定义
      let fileDir = Dir(Dir.workingDir.path + "files")
      do {
          try fileDir.create()
      } catch {
          print(error)
      }

      for upload in uploads {
            // 将文件转移走,如果目标位置已经有同名文件则进行覆盖操作.
            let thisFile = File(upload.tmpFileName)
            do {
                let _ = try thisFile.moveTo(path: fileDir.path + upload.fileName, overWrite: true)
            } catch {
                print(error)
            }
      }
 }

下载
官方文档

routes.add(method: .get, uri: "/files/**") {
    request, response in

    // 获得符合通配符的请求路径
    //request.path = request.urlVariables[routeTrailingWildcardKey]
    //指定要下载的filename+后缀
    request.path = "Snip20191212_2.png"
    // 用文档根目录初始化静态文件句柄,参数为文件的根目录
    let handler = StaticFileHandler(documentRoot: "/var/www/htdocs")

    // 用我们的根目录和路径
    // 修改集触发请求的句柄
    handler.handleRequest(request: request, response: response)
)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容