Vue使用element组件el-upload手写axios上传图片到后端java接口,数据用Formdata传递。

使用element组件el-upload手写axios上传图片到后端java接口,数据用Formdata传递。

前端代码:
action这里随便写个地址就行,因为我们是自己手写上传不用elment自带的东西(别问我为什么不用element自带的,我是自学的弄会啥算啥!),这块基本上就是直接复制的官方文档没什么多说的。

vue js代码:在这里插入图片描述
这里的1是新建一个formdata对象用来存数据,4的位置是我百度搜了2天才搜出来的赋值一定是file.raw!!! 2 和 3 是解决 后端各种500错误的。具体有没有用你可以自己删了试一试,目前我不想动弹。

浏览器console和network处的显示:
在这里插入图片描述
在这里插入图片描述
这两个红色的地方 形式一定要是这样的,不是这样的就报错,尤其是第二个方框,个人觉得因为你后端接口要参数,所以你得传键值对,但是字符串键值对好写,你要传包含文件的键值对就要用formdata。

后端接收代码:在这里插入图片描述
我后端就接收一个参数img,所以前端的formdata里就一个参数。上边3个@也是,又没有用自己去试一试吧。

实现方法:在这里插入图片描述
在这里插入图片描述

大体就是点击上传选图片,然后再在下边框里点一下就上传上去了。可以多选,挨个点挨个上传。
后端解决跨域问题:

package com.example.springboottest1.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;


@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 1允许任何域名使用
        corsConfiguration.addAllowedOrigin("*");
        // 2允许任何头
        corsConfiguration.addAllowedHeader("*");
        // 3允许任何方法(post,get等)
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue3中,可以使用el-upload组件上传图片后端Django。以下是一个简单的示例: 1. 安装el-uploadaxios ``` npm install element-plus axios ``` 2. 在Vue组件中引入el-uploadaxios ```vue <template> <el-upload class="upload-demo" action="/api/upload/" :on-success="handleSuccess" :before-upload="beforeUpload" :show-file-list="false" > <el-button size="small" type="primary">点击上传</el-button> </el-upload> </template> <script> import axios from 'axios' import { ElUpload, ElButton } from 'element-plus' export default { components: { ElUpload, ElButton }, methods: { beforeUpload(file) { // 可以在这里添加上传前的验证逻辑 }, handleSuccess(response, file, fileList) { console.log(response) // 在这里处理上传成功后的逻辑 } } } </script> ``` 3. 后端Django代码 在Django中,可以使用Django REST framework来处理文件上传。以下是一个简单的示例: ```python from rest_framework.views import APIView from rest_framework.parsers import MultiPartParser from rest_framework.response import Response class UploadView(APIView): parser_classes = [MultiPartParser] def post(self, request, format=None): file_obj = request.data['file'] # 处理文件上传的逻辑 return Response({'success': True}) ``` 在Django中,需要安装`djangorestframework`和`django-cors-headers`来处理跨域请求。可以使用以下命令来安装它们: ``` pip install djangorestframework django-cors-headers ``` 同时,需要在Django的`settings.py`文件中添加以下配置: ```python INSTALLED_APPS = [ 'rest_framework', 'corsheaders', # ... ] MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # ... ] CORS_ORIGIN_ALLOW_ALL = True ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值