当前位置: 首页 > 知识库问答 >
问题:

react.js文件未上传Spring服务器

国景铄
2023-03-14

在我的项目中,我在后端有Spring Boot,在前端有React.js。

我的后端工作正常,我知道,因为我已经用Postman测试过了。

在上传文件的前端,我有一个名为 SubmitAssignment 的提交,它看起来像这样:

state={file:''};
uploadFile = (e) =>{
    e.preventDefault();
    var formData = new FormData();
    formData.append("file", this.state.file);
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://localhost:8080/uploadFile");
    xhr.onload = function() {
        console.log(xhr.responseText);
        var response = JSON.parse(xhr.responseText);
        if(xhr.status === 200) {
            console.log("upload successful");
        } else {
            console.log("upload failed");
        }
    };
    xhr.send(formData);
};
onInputChange = (e) =>{
    this.state.file=e.target.value;
    console.log(this.state.file);
};
render() {
    return (
        <div>
            <h1>Please select file(s):</h1>
            <form>
                <input className="input-file" id="my-file" type="file" onChange={this.onInputChange}/>
                <button onClick={this.uploadFile}>Upload</button>
            </form>
        </div>
    );
}

但问题是每次上传都失败。也许原因是路径,不确定。我试图console.log路径。我得到的是C:\fakepath\Screenshot(187). png

现在我的问题是,如果是因为路径,我怎么才能正确地做它(据我所知,浏览器不允许它出于安全问题)?

否则,问题出在哪里?怎么解决?

浏览器控制台中的错误:

邮递http://localhost:8080/uploadFile400

{“timestamp”:“2019-09-16T07:20:30.382 0000”,“status”:400,“error”:“Bad Request”,“message”:“Required request part 'file' is not present”,“trace”:“org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' 不存在\r\n\tat .......

这是完整的错误消息。

如果需要 REST,出于任何原因:

@PostMapping("/uploadFile")
public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file) {
    String fileName = fileStorageService.storeFile(file);
    String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
            .path("/downloadFile/")
            .path(fileName)
            .toUriString();
    return new UploadFileResponse(fileName, fileDownloadUri,
            file.getContentType(), file.getSize());
}

共有1个答案

段干跃
2023-03-14

从我所看到的,在<code>onInputChange()(此文件路径不是实际文件)

改为下面,重要!

< code > this . state . file = e . target . files[0];

一些建议是,使用Fetch Api来发送post请求,而不是使用普通的旧Javascript

const formData = new FormData();
formData.append("file", this.state.file);
fetch('http://localhost:8080/uploadFile', {
    method: 'POST',
    body: formData
  })
   .then(success => console.log(success))
   .catch(error => console.log(error));

在您的Spring boot控制器中使用< code > @ request part(" file ")

@PostMapping("/uploadFile")
public UploadFileResponse uploadFile(@RequestPart("file") MultipartFile file) {
//Logic
}
 类似资料:
  • 我正在使用Spring4.0为RESTfulWeb服务创建POC。如果我们只传递字符串或任何其他基本数据类型,它就可以正常工作。 这个很好用。但如果我想将字节流或文件对象传递给函数,我如何编写具有这些参数的函数?我如何编写提供传递字节流的客户端? 我尝试了这个代码,但是得到了415个错误。 客户端代码-使用apache HttpClient

  • 最近遇到一个这样的需求:传一个压缩包给后台Linux服务器,后台保存后解压读取里面的文件,现学现做。在这里做个记录。 文件上传 文件上传有很多方法,这里推荐一个自己感觉挺好用的一种,代码奉上:

  • 本文向大家介绍Spring Boot搭建文件上传服务的方法,包括了Spring Boot搭建文件上传服务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Spring Boot搭建文件上传服务的具体代码,供大家参考,具体内容如下 一、服务端 pom.xml 注意:spring-boot-starter-web 1.3.3.RELEASE 依赖的servlet是3.1 二、客户端

  • 本文向大家介绍SpringMVC图片文件跨服务器上传,包括了SpringMVC图片文件跨服务器上传的使用技巧和注意事项,需要的朋友参考一下 图片文件跨服务器上传(我使用的公司云桌面作为上传服务器,自己的笔记本作为存储服务器测试的) 一、上传服务器: 1、pom文件(使用jersey插件) 2、前端页面: 3、后台controller: 二、存储图片文件服务器: 1、Tomcat的conf目录下的w

  • 我正在尝试通过REST API在服务器上上传文件。我的api请求FormData模型,但Im得到错误。 devtools中得“我得请求”得有效负载 ------WebKitFormBoundaryVpirgXMC3RU3AOFA内容-配置:表单-数据;name=“文件”;filename=“test.jpg”content-type:image/jpeg -----WebKitFormBounda

  • 问题内容: 我试图编写代码以将文件上传到PHP中的“媒体”文件夹。由于某些原因,它仍然无法正常工作。 这是执行代码: 这是我的表单代码: 任何想法为什么它可能无法正常工作? 编辑: 当我使用命令“ print_r($ _ FILES);”时,它显示: Array([file] => Array([name] =>屏幕截图2012-05-29 at 12.36.11 PM.png [type] =>