使用spring boot和react将图像上载到db:解析http请求头时出错

mnowg1ta  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(339)

在这里,我使用springboot和react实现图像上传到数据库。解析http请求头时遇到错误。
错误:
分析http请求头时出错
java.lang.illegalargumentexception:在方法名称[0x160x030x010x020x000x010x000x010x010fc0x030x030x1f0x4t0x880xe1t0x070x00[ua0xf40x8b0a0x900x8c<}0xe20xf70x080xa90xdao0xb3u0xc7g0xaf0xb30xa8]中发现无效字符。http方法名称必须是令牌
React

doit=(e)=>{
        e.preventDefault();
        let imagefile = document.querySelector('#input');
        let formData = new FormData();
        formData.append("image", imagefile.files[0]);
        return axios.post('https://localhost:8080/fileupload', "image",formData, {
                        headers: {
                               'Content-Type': 'multipart/form-data'
                                 }
                    });
    }

<form encType='multipart/form-data'>
    <input id="input" type='file' accept="image/*"/>
     <button onClick={this.doit} type='submit'>Submit</button>
</form>

Spring Boot

@PostMapping("/fileupload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE))
public String fileUpload(@RequestParam("name") String name, @RequestParam MultipartFile file) {
    try {
        byte[] image = file.getBytes();
        MyModel model = new MyModel(name, image);
        int saveImage = myService.saveImage(model);
        if (saveImage == 1) {
            return "success";
        } else {
            return "error";
        }
    } catch (Exception e) {
        return "error";
    }
}
o8x7eapl

o8x7eapl1#

所以实际上这个问题与你发送文件的方式有关。图像和视频与json数据不同。它们是长串的数字或编码文本,在屏幕上创造视觉杰作。我还不完全明白,基本上你需要做的是得到文件的位置。例如,如果使用一个文件选取器api,它允许您选择要上载的内容,并且您可以将该信息存储在一个变量中,该变量就是“file”,然后使用javascript的内置fetch方法。

const genFunction = async (file) =>{
const response = await fetch(file)
const blob = await response.blob();
// then you need to send that blob to the server
try {
      const result = await requestToServer(
                                      //configuration stuff
              contentType:'image/jpg' // specify that you are sending a image
                                      // or whatever file type somehow 
             )
console.log(request) } catch (e) { ... } }

哈哈,他们没有教我如何在编码训练营或其他什么,我没有意识到有更多的类型和事情要做这么久。我知道了如何使它与放大存储一起工作,如果有人需要,我会以本机方式作出React,只要问一个问题,我就会提供一个解决方案。
这家伙谈到了最好的方法,把东西转换成你真正需要的格式。我提供的解决方案是最慢的,但很容易理解。
http://eugeneware.com/software-development/converting-base64-datauri-strings-into-blobs-or-typed-array
您还应该结帐:
https://docs.mongodb.com/manual/core/gridfs/
在mongodb数据库中存储图像//基本上是相同的问题
https://javabeat.net/mongodb-gridfs-tutorial/
我犯了这个错误之前,我不知道如何解决它,我的帮助告诉我开始存储在awss3这不是我所要求的图像。我希望你能弄明白。

相关问题