django图片上传

环境配置

首先需要安装djangorestframework

pip insall djangorestframework

 在settings.py中加入'rest_framework'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'face_comparison_app',
    'rest_framework'
]

django后端代码

然后在命令行输入

python manage.py startapp upload_image

在views.py下写入以下代码:

#views.py
from rest_framework.response import Response
from rest_framework.decorators import api_view


@api_view(['POST'])
def upload_image(request):
    if request.method == 'POST' and request.FILES['image']:
        image_file = request.FILES['image']

        # 读取文件内容
        file_content = image_file.read()

        # 打开一个文件并将文件内容写入其中
        with open('./image.jpg', 'wb') as destination:
            destination.write(file_content)

        # 返回上传成功的响应
        return Response({'message': 'Image uploaded successfully'}, status=200)
    else:
        return Response({'error': 'No image uploaded'}, status=400)

在urls.py中加入以下代码

# urls.py
from django.urls import path
from .views import upload_image

urlpatterns = [
    path('api/upload_image/', upload_image, name='upload_image'),
    # 其他URL配置...
]

启动django

python manage.py runserver 0.0.0.0:8000  

然后前端就可以对这个接口进行访问了

前端代码

我这里使用的是vue,代码示例如下:

<template>
  <div>
    <input type="file" @change="handleFileUpload">
    <button @click="uploadImage">Upload Image</button>
  </div>
</template>

<script>
import axios from 'axios';
export default {
  data() {
    return {
      selectedFile: null
    };
  },

  methods: {
    handleFileUpload(event) {
      this.selectedFile = event.target.files[0];
    },
    uploadImage() {
      let formData = new FormData();
      formData.append('image', this.selectedFile);

      // 使用Axios或者其他HTTP库发送POST请求到Django后端
      axios.post('http://127.0.0.1:8000/api/upload_image/', formData, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      }).then(response => {
        console.log(response.data);
      }).catch(error => {
        console.error(error);
      });
    }
  }
}
</script>

注意这里需要下载axios推荐下载老版本,例如:

npm install axios@0.21.1

新版会有ES6+语法问题

启动前端代码 npm run dev,选择图片,点击上传

文件被保存在了后端文件夹upload_image下 

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值