2017-12-05 15 views
3

以下は私のvueコンポーネントのスクリプトセクションのコードです。イメージをvuejsにアップロードするにはどうすればよいですか?

すべての入力フィールドが正しく表示されていますが、画像と動画のアップロードに空の値が表示されています。

私はこの問題を解決しようとしましたが、無駄です。

 playVideo(url) { 
      let video = $('#video-preview').get(0); 
      video.preload = 'metadata'; 
      // Load video in Safari/IE11 
      if (url) { 
       video.muted = false; 
       video.playsInline = true; 
       video.play(); 
      } 
     }, 

     // Read a file input as a data URL. 
     readDataUrl(input, callback) { 
      if (input.files && input.files[0]) { 
       let fileReader = new FileReader(); 
       fileReader.onload = function() { 
        callback(fileReader.result); 
       }; 
       fileReader.readAsDataURL(input.files[0]); 
      } 
      else { 
       callback(null); 
      } 
     }, 

     // Read a file input as an object url. 
     readObjectUrl(input, callback) { 
      if (input.files && input.files[0]) { 
       let fileReader = new FileReader(); 
       fileReader.onload = function() { 
        let blob = new Blob([fileReader.result], {type: input.files[0].type}); 
        let url = URL.createObjectURL(blob); 
        callback(url, blob); 
       }; 
       fileReader.readAsArrayBuffer(input.files[0]); 
      } 
      else { 
       callback(null); 
      } 

     }, 

    } 

} 

正確に私が達成したいのは、画像と動画ファイルをアップロードし、blobとして保存する前にそれらをプレビューすることです。

the response

上記画像は

画像およびビデオブロブは、空の値を示している@samayo私の応答を示しています。

+0

:次に、このようなメソッドを追加

<input type="file" accept="image/*" @change="uploadImage($event)" id="file-input"> 

アップロードする? put/postリクエストですか? – samayo

+0

私は使っています:submit(){ let data = new FormData; data.append( 'description'、this.description); data.append( 'displays'、this.boards);data.append( 'messages'、JSON.stringify(this.messages)); /* for(this.messages内のプロパティを許可){ data.append( 'messages'、JSON.stringify(this.messages [property])); } */ axios.post( '/ campaign'、data).then(応答=> { this.feedback = response.data; })。catch(response.data); } – cjustinobi

答えて

3

axiosまたはfetchを使用している場合、vueでファイルをアップロードするのは簡単です。

これは私の現在のプロジェクトのコピー/パスタです。私は、画像をアップロードするaxiosを使用します。

まず、あなたの入力を持っている必要があります。このようになります。あなたがしようとしているURLへ

methods: { 

    uploadImage(event) { 

    const URL = 'http://foobar.com/upload'; 

    let data = new FormData(); 
    data.append('name', 'my-picture'); 
    data.append('file', event.target.files[0]); 

    let config = { 
     header : { 
     'Content-Type' : 'image/png' 
     } 
    } 

    axios.put(
     URL, 
     data, 
     config 
    ).then(
     response => { 
     console.log('image upload response > ', response) 
     } 
    ) 
    } 
} 
+0

ビデオファイルをアップロードし、プレビューしてblobとして保存するにはどうすればよいですか。それが私が達成しようとしていることです。 @サマヨ画像ファイルにも同じことが適用されます。 – cjustinobi

+0

私はあなたのカメラにアクセスして画像をキャプチャしてアップロードする方法を知っています。私はそれを行うライブラリに取り組んでいますが、ビデオの記録方法はわかりませんが、 'mediaDevices'ここに機能を実装すると分かります – samayo

関連する問題