tp、vue前后端分离文件上传

编辑: admin 分类: 电脑知识 发布时间: 2023-06-14 来源:互联网
后端代码(tp6)

先设置文件存储位置

  1. // 文件上传
  2. public function uploads(){
  3. // 接受文件上传
  4. $file = Request()->file('file');
  5. // dump($file);
  6. // 设置文件上传的大小
  7. $FileMaxSize = 1024*1024*2;
  8. // 设置规则
  9. $validate = Validate::rule([
  10. 'file'=>'fileSize:'.$FileMaxSize.'|file|fileExt:jpg,png,gif,docx'
  11. ]);
  12. // 检测文件是否符合所设规则
  13. $result = $validate->check([
  14. 'file'=>$file
  15. ]);
  16. if($result){
  17. // $info = Filesystem::putfile('topic',$file); //保存路径:runtime\storage\topic\
  18. $info = Filesystem::disk('public')->putfile('bannerImg',$file); //保存路径:public\storage\topic\
  19. // dump($info);
  20. $data['img'] = $info;
  21. Db::connect('mysql2')->table('wly_banner')->insert(['imgurl'=>$info]);
  22. return Result::Success($data);
  23. }else{
  24. // dump($validate->getError());
  25. return Result::Error(0,$validate->getError());
  26. }
  27. }
前端代码 (vue3)
  1. <input type="file" @change="handleFile">
  2. <!-- 存放图片 -->
  3. <img v-if="curImgUrl!=''" :src="baseImg+curImgUrl" alt="" srcset="" style="width:200px;height:auto;">
  4. <button @click="toUpload">上传</button>
  1. const baseImg = ref('http://phpedu.com/1207/mytp/public/storage/');
  2. const curImgUrl = ref('');
  3. const fileUrl = ref('');
  4. const fileUrl2 = ref([]);
  5. const handleFile = ()=>{
  6. let filePaths = window.event.target.files[0];
  7. let obj = {file:filePaths};
  8. fileUrl.value = obj;
  9. }
  10. const toUpload = ()=>{
  11. // 创建一个表单数据
  12. var data = new FormData();
  13. data.append("file",fileUrl.value.file);
  14. uploads(data).then((res)=>{
  15. console.log(res);
  16. alert(res.message);
  17. if(res.code==1){
  18. curImgUrl.value = res.data.img;
  19. }
  20. })
  21. }
成功后在所设置文件夹可看见上传文件

【文章原创作者:美国服务器 https://www.68idc.cn 欢迎留下您的宝贵建议】