易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 174|回复: 1
收起左侧

vue文件上传编写错误未成功的代码

[复制链接]
发表于 2025-8-5 21:35:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
<template>
. c2 X# t  S, Z: @) N, z  <el-dialog5 K( _% j% {4 P6 X
   title="上传"
/ g, m4 j) `6 e, ~; _   :visible.sync="dialogVisible"  c* T, K; ~: `( q4 c/ S# v- o
   width="40%"
1 W4 k" G% i( L- x( l7 V; i   :before-close="handleClose"
2 n# S4 o2 e# L% y% c3 ^  >
+ I) D% n1 z  l7 z; f6 M. b    <el-form ref="form" :model="form" size="small" label-width="80px">
# @  O2 c0 q: D4 u  k      <el-form-item label="文件名称:">2 C3 V# Y. [% b3 T0 {6 l+ S
        <el-input v-model="form.contitle" disabled></el-input>
! `0 ~; n- c/ s' Q7 |5 b/ [      </el-form-item>
" U, `/ f2 j0 x' Q; U4 v; S      <el-form-item label="文件上传:">
% j' ^8 R  J) j! f        <div class="uppicture">& T2 N* G$ m# E5 R0 p
          <input type="file" class="upinput" ref="file" @change="showimg" />
4 g# r2 A0 W) G: z5 [          <i class="el-icon-plus" id="changes" @click="changeimg"></i>; e% V1 c7 t, R, v  j. j
          <p>上传文件图片附件</p>
( m0 V$ q; Q4 U& a5 b6 p        </div>7 l/ E0 I( b/ W: S3 C# ^5 k
        <el-button type="primary" class="uploadbutton" @click="addupload">2 G  D. V% C0 ?, a* e
        上传附件/ R9 b! }$ R( v7 E
        </el-button>$ M( S3 \' t. ?  S' {" `* q
      </el-form-item>  }- x7 m% `' v
    </el-form>
& l" z  }5 i& _2 n9 @     <span slot="footer" class="dialog-footer">4 r# l$ P" Z: U3 c
        <el-button @click="handleClose"
& G" w; D* E2 D. N: Z         style="background: #f7f7f7". B: O- X# R" M6 ~
         size="small">取消</el-button>
5 g7 h3 g+ y6 ]& @  I& E7 c& X     </span>: i# g: Y7 Z7 }# K0 Y- c% T& s* C
  </el-dialog>, Z# K. ^$ X% C/ Z1 p( `+ Z
</template>$ L8 E! k8 c  c# R: D/ ~# ~" f

+ |9 j# U0 |2 E2 u, P<script>4 k* R/ ~$ p6 x% L
// 从API中引入uploadvideo组件! [5 Z& i. {' ~( i
import { uploadvideo } from '@/utils/apis'
2 O" x5 e5 h" I8 x: j. o3 u5 m// 引入遮罩层组件; f) c' i& m. l- @$ ]
import { Loading } from 'element-ui'& m0 k% ^' {, k
export default {
  B6 P$ D6 w3 G9 b  name: 'fileUpload',7 Q0 G6 p* ~5 j# {7 g# G. t
  data () {
- @: H+ J+ w7 M# x    return {0 M$ w9 `7 K" T: B$ r
      form: {, J6 {3 `. T2 `1 }9 T) U* |
        // 文件名称8 S8 W; z* d, _4 I- z
        contitle: ''- e( }* u5 Z3 U( H
      },
. u# o0 a2 j4 C: G) B' I" C      formdata: {}! a, t- J' N3 W4 L) @  r
    }
/ c) t* {0 z8 a5 p5 R, M* o! g  }," f7 O1 Q6 F5 H$ q' q
  props: {
6 S9 Y7 `  ~( a+ x# v. B    // 显示隐藏, v2 J- d- Z% ^" b" T
    dialogVisible: {
# J' a2 t) k2 L      type: Boolean,
: i" A4 H$ C" a) v- J, @/ t* i) n, X      // 必传& C& }/ A( h" a! K  u
      required: true  V" g7 J' ]1 S$ ^2 w& S8 S0 j
    }1 N% h5 {  m1 J( a
  },- I' o" A7 \2 Y# T
  methods: {  e% `: ?2 C# N9 G. \
    // 关闭之前
- x% t! P4 M" l5 E    handleClose () {
1 K: J/ G' M7 j. p1 [* S: d      console.log('关闭之前')
% c8 t, G! W5 |2 A/ Z& s$ Y# Z6 k" R      // .sync语法糖,单向数据流问题," L$ i4 V% \" j
      // 父组件传递给子组件的数据,子组件直接修改会报错,需要传递给父组件修改
$ h0 }  J4 o' Z# S# M+ G      this.$emit('update:dialogVisible', false)
3 r- y6 B  E  f' H    },
6 f) P) K6 B$ A4 ^0 ^' Y2 @3 K3 |, ?    // 输入获取事件
  Q4 r8 [) A8 M; l    showimg () {$ C7 a9 ?% q$ W% S
      const that = this
( j8 s- g" ~/ ^8 ^      console.log(that.$refs.file)- j. r; X; R9 q" z' ]9 v6 `- _  w
      console.log(that.$refs.file.files[0])! U- X1 `# n- P, v3 a* [
      // 文件名复制) i5 }7 W8 k' k5 @6 B
      that.form.contitle = that.$refs.file.files[0].name
' g  r: E6 v" ^      // 声明一个formdata对象- T/ Y, b. u1 L  \9 w. ~
      this.formdata = new FormData()
% t# ?/ ?3 D  s+ B0 [. Z! P& N6 i      // 赋值需要传递的文件
0 B, Z; ?5 D) P+ T( J0 y/ k) H      this.formdata.append('multipartFile', that.$refs.file.files[0])
4 ~; L; D8 c3 i2 @/ c& M8 X, q/ p2 m    },) o/ _# N& H. t1 Q/ W
    changeimg () {
$ V( U. K$ z8 ~      // 点击图标时候,触发input选择文件按钮
1 X! N( [7 l0 h$ Y2 i- J$ N3 {1 e      this.$refs.file.dispatchEvent(new MouseEvent('click'))
0 }( T$ A% U( y, a1 l% c6 n; k    },) E: P+ o. X' n3 E3 w2 D! I. `+ f
    // 上传附件
8 q2 X  x, ~( }* E    async addupload () {7 s" l4 E) O2 U" n+ g. m
      // 上传文件提示,未选择文件提示用户
5 p: ~$ z0 c; ?      if (!this.form.contitle) {
3 Z4 l( ~4 _& B& c% b3 H5 }        return this.$message.warning('请先在左侧上传文件')/ X$ G: w; b3 j2 ?1 ~. [( I! a
      }! A1 C& }' Q2 ?2 H
      // 开启遮罩层% D! L; F! s( S
      let loadingInstance = Loading.service({: T( A" ^. b' x+ S- Y
        lock: true, // lockde 修改符---默认是false1 y% Z+ x# ^  A( K
        text: '正在上传文件,请耐心等待', // 显示在加载图标下方的加载文件, W* W  c- w3 q( b
        spinner: 'el-icon-loading', // 自定义加载图标类名/ Q8 T  _! a/ N9 o
        background: 'rgba(0, 0, 0, 0.7)', // 遮罩层的颜色
% s) S3 m) f/ Y7 O8 Z: p( R        target: document.querySelector('#futureTransferDialog') // loading覆盖的dom元素节点
+ _5 R% f" l" J1 w8 s( `      })* Q5 Z! G+ I- a  x( b& j4 H2 ?. U
      const res = await uploadvideo(this.formdata)
6 `! M' P" I5 Z; {- q) R5 h3 R      console.log('文档服务器上传文件', res)/ c' `7 u# v3 e3 G( S: G5 R
      // 传递文件存储id
+ o- w" F% M2 _3 n$ T1 K      this.$emit('updataurl', res.data.url)
: @& Q- m  L) y6 j1 Z* B6 u      // 回显文件名称给父组件的form 表单9 p5 a  y7 l1 ]6 U
      this.$emit('updata', this.form.contitle)
1 l7 o5 d# d# Z1 Z* S      // 清空表单
. l( {8 |, C% U' f      this.form.contitle = ''
: H/ z" Q+ \& B: H$ N0 T      this.formdata = {}
7 X$ V9 n& q, m) T" ]* T! }- G1 n      // 关闭弹框
% ?- g$ H! H! Y) |/ f. [      this.handleClose()6 A3 Z% N, r+ l  |9 b7 v1 _+ C
      // 关闭遮罩层
$ W8 h8 n- q5 ^- q1 t  e( g      loadingInstance.close()5 y$ G7 f& r" y* ^
    }1 D- J$ [% _2 `8 m( a
  }( t; d2 e( s# X: D+ t
}: U4 Q5 D; u& _+ c
</script>
  a) U' C% C& T1 A8 Y. G: t. C<style lang="less" scoped># p2 h0 ~! Z! n6 e" r, l
.v-deep .el-dialog {
5 v  g4 J: Z3 f- w  border-radius: 10px;( ?# f* i  m! m! t9 Z
  .el-dialog__header {
" S! _6 ]; u( ?* b+ P0 j% U    border-radius: 9px 9px 0 0;
1 d. r4 a5 z0 ~# p    background-color: #1488c6;
2 Y/ `; V0 f. Y$ O( @0 q4 Z4 x* {    padding: 8px 20px;
' U- B. A7 ]4 t    .el-dialog__title {" m# I- q9 k: P& s& w8 q/ |
      color: white;  E$ ^3 ^- r0 }! o  ?
      font-size: 16px;
, i3 N1 e2 V$ t3 Y( |9 ?( W4 X$ F7 {    }
$ E/ W& s8 _. r7 L7 R" M* @9 Q, M3 e, E0 s0 v/ d, _8 h# A
    .el-dialog__headerbtn {
3 ]* w' t" g, G2 K9 `$ s      top: 12px;
  M( y" K; W8 b) G9 ]+ C2 @1 i9 s      i {
5 R2 F0 ^, L2 h: T$ V$ H/ N' ^        color: white;3 j  f( I! Z, a+ @$ `
      }
* g5 k5 R6 \) B( t( f& }2 c    }0 B0 }4 N3 ~7 R2 g  r- h0 r1 F
  }
# j- @" b; ^* O6 \. D1 p  .el-dialog__footer {- i( j* B) ?9 D+ N/ \5 `5 |
    text-align: center;
. n- a! o4 b* j; i  }
1 A: c) u5 U1 |' M0 R  .el-dialog__body {
# A$ w' @& B( F# N    padding: 12px;, x( K7 f; h: S5 w
  }
# m9 N1 h7 ^; c8 r* o4 l4 k! ?  .uppicture {
) K' |' I9 M6 H2 o6 V    width: 120px;5 [% Z) d7 ?4 h% `3 m6 C# }0 p1 \4 b
    height: 120px;7 ~7 _  D9 c: X# x8 [" r1 G
    border: 1px solid #717376;6 ~0 e4 J$ t/ z; k$ q% E
    position: relative;6 d8 y& x( N, T8 E3 I& M# |
    cursor: pointer;6 X3 K5 f! g! V0 o/ l% ]- l
    input {% c' k7 |5 t+ k7 q4 @
      width: 100%;
  y. X  p) a: k* @$ s, ^" D; h8 g      height: 100%;# O- V9 p1 s, P. |$ Q
      vertical-align: middle;) {* r) h" p0 R. L# }* _+ o; c
      opacity: 0;7 y" V& U2 v+ h, `' h! g/ G" O
    }
& S. r) h) a) q9 ~0 n( M    i {+ `% z# f: w% W+ w( V) H' y
      position: absolute;* E0 p. j  L* w  j
      top: 50%;
- G9 y/ a6 \- G* y) L9 l6 w      left: 50%;' W& ?5 s# x" v+ @
      transform: translate(-50%, -50%);
7 l( v7 C5 h# w9 c5 |      font-size: 30px;
" o7 ?* h0 {9 `3 `5 @% h4 v" o      // background-color: skyblue;9 i: d3 D2 [8 f1 {
    }
! @( k* C/ s: J, W/ L    p {
, @; _) {( ~1 ^- V5 t, s      position: absolute;! f: L7 a) l1 s: V5 x& e
      bottom: -2px;6 T2 l. Z% U( }5 x, X- \
      left: 50%;- c' T* F1 u8 U, ]0 ~0 ^! m; S! z. }! {
      word-break: keep-all;
( X! D, p1 m+ d& S      transform: translate(-50%);# |( O  C' L2 p. ]7 S
    }5 w+ g9 C9 q& w% ^/ W: ?# u7 |
    .uploadbutton {: Z  m4 T5 \6 |# Q
      position: absolute;
+ B5 ~: \  z1 W+ E, D      bottom: 0;' l" t+ J3 o8 A" n3 g
      margin-left: 20px;# W7 L+ R! Y: P' b. Z* c6 C6 j
      position: relative;8 j+ u$ P6 q  H( x0 a. q3 L- g: Z6 e* G
    }/ j. b" W! ~9 K. Q$ ]. Q! x
    &:hover {
+ b6 T3 a3 M+ v7 }/ Y, `* w& T4 t      color: #2da9fa;1 U7 g" M  G4 A
      border: 1px solid #2da9fa;
' w4 n  q8 T1 I& l; l8 p4 ]      p {
8 V) s- ~6 q8 y4 v        color: #2da9fa;
$ V$ k' [& C) Q: D! d! B* @" Y      }
* A* n( j% l- x8 x& {$ i$ j    }
' D7 n+ ^7 Z  P8 j+ c$ c5 b- f! l  }
8 D+ }1 F0 z8 v8 p; d0 i. N( L' v  .uploadbutton {
5 {6 I, ^8 Q! M" y4 e& B; b    position: absolute;
) B; @; W: \9 j! S    top: 70%;
$ Z4 i0 o# |6 \0 P) s3 Z    left: 150px;% r3 c; _0 O: L2 f. X& v
  }) ?' p( K; t  N/ J/ Y2 h
}1 W% O" C* I3 D3 {
</style>6 J" {' G) F8 p5 m4 \
 楼主| 发表于 2025-8-5 21:35:50 | 显示全部楼层
未成功的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 23:34 , Processed in 0.052413 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表