• 上传文件时 重新载入页面以获取源代码 http://*/upload.php


    今天做一个处理上传文件的接口时碰到这样一个问题,

    用的是element-ui的上传组件,但是上传失败,

    抓包一看返回的是 重新载入页面以获取源代码 http://*/upload.php

    网上搜了一下,原来php处理跨域访问要加上头信息;

    upload.php

    <?php
    header("Access-Control-Allow-Origin: *");

    //首先允许跨域访问,如果是*代表所有的地址都可以访问如果只能是某个地址访问则直接写地址 写全地址http开头的地址。

    解决:)

    贴上整个的源码 element-ui+php 实现图片的上传

    upload.vue

    <el-upload
      class="avatar-uploader"
      action="你的处理上传的文件路径"
      :show-file-list="false"
      :on-success="handleAvatarSuccess"
      :before-upload="beforeAvatarUpload">
      <img v-if="imageUrl" :src="imageUrl" class="avatar">
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
    
    <style>
      .avatar-uploader .el-upload {
        border: 1px dashed #d9d9d9;
        border-radius: 6px;
        cursor: pointer;
        position: relative;
        overflow: hidden;
      }
      .avatar-uploader .el-upload:hover {
        border-color: #20a0ff;
      }
      .avatar-uploader-icon {
        font-size: 28px;
        color: #8c939d;
        width: 178px;
        height: 178px;
        line-height: 178px;
        text-align: center;
      }
      .avatar {
        width: 178px;
        height: 178px;
        display: block;
      }
    </style>
    
    <script>
      export default {
        data() {
          return {
            imageUrl: ''
          };
        },
        methods: {
          handleAvatarSuccess(res, file) {
            this.imageUrl = URL.createObjectURL(file.raw);
          },
          beforeAvatarUpload(file) {
            const isJPG = file.type === 'image/jpeg';
            const isLt2M = file.size / 1024 / 1024 < 2;
    
            if (!isJPG) {
              this.$message.error('上传头像图片只能是 JPG 格式!');
            }
            if (!isLt2M) {
              this.$message.error('上传头像图片大小不能超过 2MB!');
            }
            return isJPG && isLt2M;
          }
        }
      }
    </script>
    //upload.php
    <?php header("Access-Control-Allow-Origin: *"); $file = $_FILES['file'];//得到传输的数据 //得到文件名称 $name = $file['name']; $type = strtolower(substr($name,strrpos($name,'.')+1)); //得到文件类型,并且都转化成小写 $allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型 //判断文件类型是否被允许上传 if(!in_array($type, $allow_type)){ //如果不被允许,则直接停止程序运行 return ; } //判断是否是通过HTTP POST上传的 if(!is_uploaded_file($file['tmp_name'])){ //如果不是通过HTTP POST上传的 return ; } $upload_path = "./"; //上传文件的存放路径 //开始移动文件到相应的文件夹 if(move_uploaded_file($file['tmp_name'],$upload_path.$file['name'])){ echo "Successfully!"; }else{ echo "Failed!"; }
  • 相关阅读:
    进入正在运行的Docker的asp.net core容器
    EF 更新记录发现外键更改但更新又跳回以前值
    远程获取http数据和提交数据
    C# 32位16进制加密
    netcore命令行运行程序
    MD5加密32位16进制
    C# MD5加密32位16进制有时少一位问题
    netcoreMVC中使用Vue模板分页封装(不适合数据量大)
    Vue组件间传值 和 访问
    jenkins部署安装
  • 原文地址:https://www.cnblogs.com/xin1998/p/6636534.html
Copyright © 2020-2023  润新知