当前位置:   article > 正文

oat++ 解决用户上传文件及获取文件名的解决方法

oat++ 解决用户上传文件及获取文件名的解决方法

        这里先给出oat++ 中获取用户上传文件的官方文档 官方网址

        官方最简单的是以下这个

  1. #include "oatpp/core/data/stream/FileStream.hpp"
  2. ...
  3. ENDPOINT("POST", "/upload", upload, REQUEST(std::shared_ptr<IncomingRequest>, request)) {
  4. oatpp::data::stream::FileOutputStream fileOutputStream("/path/to/file");
  5. request->transferBodyToStream(&fileOutputStream); // transfer body chunk by chunk
  6. return createResponse(Status::CODE_200, "OK");
  7. }

        用户只需要提供文件的位置即可。

        如果想获取用户上传的文件名,可以用以下代码

  1. ENDPOINT("POST", "datasets/upload", upload, REQUEST(std::shared_ptr<IncomingRequest>, request)) {
  2. /* Prepare multipart container. */
  3. auto multipart = std::make_shared<multipart::PartList>(request->getHeaders());
  4. /* Create multipart reader. */
  5. multipart::Reader multipartReader(multipart.get());
  6. /* Configure to read part with name "part1" into memory */
  7. multipartReader.setPartReader("mimiz", multipart::createInMemoryPartReader(-1));
  8. /* Read multipart body */
  9. request->transferBody(&multipartReader);
  10. /* Print value of "part1" */
  11. auto part1 = multipart->getNamedPart("mimiz");
  12. /* Assert part is not null */
  13. OATPP_ASSERT_HTTP(part1, Status::CODE_400, "part1 is null");
  14. auto filename = part1->getFilename();
  15. OATPP_LOGD("test", "%s", filename.getValue("").c_str());
  16. oatpp::data::stream::FileOutputStream fileOutputStream(std::string("/root/pro_bz/data/" + filename.getValue("")).c_str());
  17. fileOutputStream.writeSimple(part1->getPayload()->getInMemoryData());
  18. return createResponse(Status::CODE_200, "OK");
  19. }

        其中filename就是用户上传的文件名,当用户使用postman测试的时候一定要保证key为mimiz

        成功!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/442031?site
推荐阅读
相关标签
  

闽ICP备14008679号