• 多个 input 实现文件上传到本地 vue+django


    <template>
      <div>
        <div>
          <form>
            <tr>
              <td>第一个文件</td>
              <td><input type="file" id="file1" /></td>
            </tr>
            <tr>
              <td>第二个文件</td>
              <td><input type="file" id="file2" /></td>
            
            </tr>
            <tr>
              <td></td>
                   <!-- 上传文件 -->
              <td><input type="button" value="点击上传" @click="upload" /></td>
            </tr>
          </form>
        </div>
      </div>
    </template>
    <script>
    import { files_post } from "../axios_api/api";
    export default {
      data() {
        return {
         
        };
      },
      mounted() {},
    
      methods: {
        upload() {
          let data = new FormData();
          // 根据id获取对应input框里面的文件元素
          var file1 = document.getElementById("file1").files[0];
          var file2 = document.getElementById("file2").files[0];
    
          // 文件名称(要和后台参数名称一致)  文件实体  文件名
          data.append("file1", file1, file1.name);
          data.append("file2", file2, file2.name);
          
          this.axios({
            url: "http://127.0.0.1:8000/XXX/",
            method: "post",
            data: data,
            // 声明上传文件的请求头
            headers: { "Content-Type": "multipart/form-data" },
          }).then((res) => {
            console.log(res);
          
          });
        },
      },
    };
    </script>
    

    django后台

    class UploadFile(APIView):
        def post(self, request):
           
            # 接受参数
            myfile = request.FILES.get('file1')
    
            myfile1 = request.FILES.get('file2')
           
            file_list = [myfile1, myfile]
    
            # ps:如果上传的图片是中文名称, QQ图片20200210134035.jpg",需要将 " 替换掉
            for myfilename in file_list:
                print(myfilename)
                # 上传的文件是一个对象
                myfilename_str = myfilename.name.replace('"', '')
                print(myfilename.name)
                # 建立文件流对象   使用路径引入       二进制流写入
                f = open(os.path.join(UPLOAD_ROOT, myfilename_str), 'wb')
                # print(f)
                print(myfilename.chunks())
    
                # 写入两个文件
                for chunk in myfilename.chunks():
                    f.write(chunk)
                f.close()
          
    
            return Response({'filename': myfilename_str})
  • 相关阅读:
    Python open() 函数
    python中的多重循环
    网络爬虫构造出URL的列表数据
    js自定义类和对象及继承
    最全的CSS浏览器兼容问题
    大型网站性能优化(页面(HTML)优化的方法)
    element-ui el-table有设置固定列fixed,高度不对的情况
    伊始
    【Object-C】Object-C 的包装类
    【Object-C】处理对象:description 方法、isEqual方法
  • 原文地址:https://www.cnblogs.com/bronyaa/p/14324259.html
Copyright © 2020-2023  润新知