画像をデータベースにアップロードし、Vueで実装したページに表示する例

亚连
リリース: 2018-05-29 16:07:57
オリジナル
4677 人が閲覧しました

この記事では、vue で実装された画像をデータベースにアップロードしてページに表示する機能を主に、vue.js をベースにしたデータベース操作とページ画像表示関連の操作スキルをサンプル形式で紹介します。この記事の例を参照してください

画像をデータベースにアップロードし、vueで実装されたページに表示する機能について説明します。参考のためにみんなと共有してください。詳細は次のとおりです:

1. クリックして画像をアップロードすると、画像選択オプション ボックスが表示されます。

ページコード:

<p class="form-signin-heading" id="btnUpload" @change="upload">上传图片</p>
<input type="file" name="avatar" id="avatar" multiple="multiple" @change="upload">
<img :src="&#39;http://localhost:8888&#39;+item.photos_url" alt=""/>
ログイン後にコピー

アップロードした画像のスタイルを設定したいので、入力を非表示にし、入力のクリックイベントをpボックスに送信するために次の操作を実行します:

mounted: function () {
 var upload = document.getElementById("btnUpload");
 var avatar = document.getElementById("avatar");
 upload.onclick =function(){
  avatar.click(); //注意IE的兼容性
 };
}
ログイン後にコピー

2に2を追加します。 API インターフェースのコントローラー層 ファイルに、次のように名前を付けます:

upFile.js

let multer=require(&#39;multer&#39;);
let storage = multer.diskStorage({
  //设置上传后文件路径,uploads文件夹会自动创建。
  destination: function (req, file, cb) {
    cb(null, &#39;./public/uploads&#39;)
  },
  //给上传文件重命名,获取添加后缀名
  filename: function (req, file, cb) {
    let fileFormat = (file.originalname).split(".");
    cb(null, file.fieldname + &#39;-&#39; + Date.now() + "." + fileFormat[fileFormat.length - 1]);
  }
});
//添加配置文件到multer对象。
let upload = multer({
  storage: storage
});
module.exports = upload;
ログイン後にコピー

upFileController.js

var muilter = require(&#39;./upFile.js&#39;);
//multer有single()中的名称必须是表单上传字段的name名称。
var upload=muilter.single(&#39;file&#39;);
function dataInput(req, res) {
  upload(req, res, function (err) {
    //添加错误处理
    if (err) {
      return console.log(err);
    }
    //文件信息在req.file或者req.files中显示。
    let photoPath = req.file.path;
    photoPath = photoPath.replace(/public/,"");//将文件路径中的public\去掉,否则会和静态资源配置冲突
    //将photoPath存入数据库即可
    console.log(photoPath);
    res.send(photoPath);
  });
}
module.exports = {
  dataInput
};
ログイン後にコピー

3. 画像のアドレスをページ上のデータベースに保存します

upload: function (e) {
    var that = this;
    let formData = new window.FormData();
    let file = e.target.files[0];
    formData.append(&#39;file&#39;,file);//通过append向form对象添加数据
    //利用split切割,拿到上传文件的格式
    var src = file.name,
     formart = src.split(".")[1];
    //使用if判断上传文件格式是否符合
    if (formart == "jpg" || formart == "png" ||
     formart == "docx" || formart == "txt" ||
     formart == "ppt" || formart == "xlsx" ||
     formart == "zip" || formart == "rar" ||
     formart == "doc") {
     //只有满足以上格式时,才会触发ajax请求
     this.$axios.post(this.$api.personalCenter.upFile,formData).then(function (res) {
      that.upFileData = res.data;
     }).then(function (res) {
      var params = {
       photos_url: that.upFileData,
       photo_des: &#39;&#39;
      };
//      console.log(params.photos_url,&#39;photos_url&#39;)
      that.$axios.post(that.$api.personalCenter.wallAdd,qs.stringify(params)).then(function (res) {
       console.log(res.data);
       that.$options.methods.imgList.bind(that)();
      }).catch(function (err) {
       console.log(err);
       console.log("请求出错");
      })
     })
    } else {
     alert("文件格式不支持上传");
    }
}
ログイン後にコピー

上記は私が皆さんのためにまとめたものは、将来的に皆さんのお役に立つことを願っています。

関連記事:

複雑なjsonパラメータをコントローラに渡すspirngmvc jsのインスタンス

Vue.jsのフォーム制御操作まとめ

jsの配列パラメータをバックグラウンドコントローラに渡す方法

以上が画像をデータベースにアップロードし、Vueで実装したページに表示する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート