ホームページ >ウェブフロントエンド >jsチュートリアル >AjaxベースのformData画像とデータアップロードルーの実装
今回はAjaxベースのformData画像とデータアップロードの実装についてお届けします。 AjaxベースでformData画像とデータをアップロードする際の注意点は何ですか? 私は最近、ユーザー データとフォームのアップロードに関するプロジェクトに取り組み、多くの落とし穴に遭遇しました。皆さんのお役に立てればと思い、その概要をここで共有します。 (Xiaobai、皆さんもっとコミュニケーションをとってください)
あまり詳しくは説明しないので、コードだけ見ていきましょう! !
1. アップロードコンポーネント説明、プロジェクトはvueフレームワークに基づいています<template>
<p class="newproduct">
<p class="topbox">
<p class="shopbox">
<img class="shopicon" src="../../assets/head.jpg">
<p class="shopname">开心就好的小店</p>
</p>
</p>
<p class="goodsbox">
<p class="startleft namebox">
<label class="title">商品名称:</label><input class="noborder" v-model="goodsname" placeholder="请输入商品名称">
</p>
<p class="startleft goodstypebox">
<label class="title">商品类型:</label>
<select v-model="goodstype">
<option value="请选择">请选择</option>
<option value="图书">图书</option>
<option value="卡券">卡券</option>
<option value="服装">服装</option>
<option value="礼品">礼品</option>
<option value="运动装备">运动装备</option>
<option value="电子设备">电子设备</option>
<option value="日用百货">日用百货</option>
<option value="其他">其他</option>
</select>
</p>
<p class="startleft describebox">
<label class="title">商品描述</label>
</p class="startleft">
<textarea class="describeinfo" v-model="goodsinfo"></textarea>
<p class="startleft">
<label class="title">单价:</label>
<input class="noborder" placeholder="请输入单价" v-model="price">
</p>
<p class="startleft">
<label class="title">数量:</label>
<input class="noborder" placeholder="请输入数量" v-model="number">
</p>
<p class="startleft">
<label class="title">联系电话:</label>
<input class="noborder" placeholder="请输入手机号" v-model="phone">
</p>
<p class="startleft">
<label class="title">地址:</label>
<input class="noborder" placeholder="请输入地址" v-model="address">
</p>
<p class="startleft">
<label class="title">图片</label>
<img src="">
<img src="">
</p>
<p class="addimg">
<p class="imgbox">
<img class="goodsimg" src="../../assets/addimg.png">
<input id="file" type="file" class="fileupload" accept="image/*" multiple capture="camera" @change="viewimg()"/>
</p>
<p class="imgbox">
<img class="goodsimg" src="../../assets/addimg.png">
<input type="file" class="fileupload" accept="image/*" capture="camera" @change="viewimg()"/>
</p>
</p>
</p>
<p class="bottombox" :style="{'top':(height-12) + 'px'}">
<ul class="bottommenu">
<li class="item" @click="backHome()">首页</li>
<li class="item" @click="backShop()">返回货架</li>
<li class="item border">放弃编辑</li>
<li class="item" @click="uploadtest()">上架</li>
</ul>
</p>
<p class="fillbottom"></p>
</p>
</template>
説明、これには写真をアップロードするための2つのコンポーネントが含まれています、つまり、複数の写真を選択できます。後者はシングルファイルモードです。
viewimg($event) {
//获取当前的input标签
var currentObj = event.currentTarget;
//找到要预览的图片img标签,亦可动态生成
var img = currentObj.parentNode.children[0];
setImagePreview(currentObj, img);
function setImagePreview(docObj, imgObjPreview) {
if (docObj.files && docObj.files[0]) {
imgObjPreview.style.display = 'block';
imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
}
}
}
この部分の主な機能は、もちろん、ここに複数の写真を表示することです
3. 画像のアップロードです。
説明:
は、キーと値のペアの形式でデータを保存する formData.append('barterCategoryid', _self.goodstype); に似ていますが、formData.append("file", file.files[0]) , file.files[0].name); 最初のパラメータはサーバーが受け取るパラメータ名、2 番目はファイル オブジェクト、3 番目のパラメータはファイル名です。このようにして、複数のファイルをファイルに追加できます。配列形式のサーバー。
バックエンドがこのタイプのファイルを受信する場合、タイプは次のように指定されます: MultipartFile タイプ特別な指示:
processData: false、
contentType: false、
これら 2 つの文を追加する必要があります。それ以外の場合は、データはシリアル化され、バックエンドがそれを認識できなくなります
ファイルプロトコルのAJAXリクエストをサポートするようにGoogle Chromeを設定する方法
phpを使用してajaxによってバックグラウンドに送信されたデータを受信する方法
以上がAjaxベースのformData画像とデータアップロードルーの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。