首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将csv文件传递到SpringBoot java服务器

将csv文件传递到SpringBoot java服务器
EN

Stack Overflow用户
提问于 2018-08-09 07:16:57
回答 2查看 1.1K关注 0票数 0

我在reactjs前端有一个file类型的输入域。我想上传一个CSV文件,并将其发送到使用SpringBoot的服务器。我有问题,如何获得该文件,一旦它是提取到我的后端。

这是我在render方法中输入的文件:

代码语言:javascript
复制
<input
    accept=".csv"
    type="file"
    onChange={this.handleChange}
/>
<Button primary onClick={this.handleSubmit}> Submit </Button>

HandleSubmit:

代码语言:javascript
复制
handleSubmit(event) {
        event.preventDefault();

        let formData = new FormData();
        formData.append('file', this.state.csv);
        fetch('http://localhost:8080/ingest', {
                method: 'POST',
                body: formData
            })
            .then((res) => {
                    var promiseStatus = res.text();
                    promiseStatus.then(function (value) {
                        console.log(value);
                    });
                })
}

我的后端控制器是

代码语言:javascript
复制
@PostMapping(INGEST_URL)
public String ingestDataFile(@RequestBody ??? response) {
    return "temporary return";
}

比如说,为了打印文件的内容,ingestDataFile()应该接受什么作为requestBody。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-09 07:38:36

您的端点应该看起来很像这样

代码语言:javascript
复制
    @PostMapping(INGEST_URL)
    public String ingestDataFile(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
     if (file.isEmpty()) {
                redirectAttributes.addFlashAttribute("message", "No File is Present");
                return "redirect:uploadStatus";
            }
             try {

                // Get the file and save it somewhere
                byte[] bytes = file.getBytes();
                Path path = Paths.get("FOLDER TO UPLOAD TO" + file.getOriginalFilename());
                Files.write(path, bytes);

                redirectAttributes.addFlashAttribute("message",
                        "File upload successful'" + file.getOriginalFilename() + "'");

            } catch (IOException e) {
                e.printStackTrace();
            }

            return "redirect:/uploadStatus";
    }
    @GetMapping("/uploadStatus")
        public String uploadStatus() {
            return "uploadStatus";
        }
票数 1
EN

Stack Overflow用户

发布于 2018-08-09 07:52:32

参数应为:

代码语言:javascript
复制
@PostMapping(INGEST_URL)
public String ingestDataFile(@RequestParam("file") MultipartFile file) {
    System.out.println("Name is::: " + file.getName());
    // Get file in byte[] using file.getBytes()
    storeCSVInDbServer(file); 
    return "temporary return";
}

如果要将文件存储在数据库服务器中,可以将其存储在数据库的BLOB列中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51756899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档