まず、レンダリング:
これは、その時点でもっと写真のために作ったコードです。私はあなたが学ぶためにそれを取り出します(あなた自身の個人情報によって変更する必要があり、一般的な方向は正しいです)
合計に関与する3つのドキュメントがあります(定期的に言えば)
1.ルートエントリファイル(私はここに /routes.jsです、そしてそれはしばしば /app.jsにあります)
コードコピーは次のとおりです。
//おいしい食べ物を追加します
app.all( '/add'、users.add);
2.ルーティングコントローラーファイル(私は /routes/users.jsです)
コードコピーは次のとおりです。
//おいしい食べ物を追加します
exports.add = function(req、res){
if(req.method == "get"){
var user = {};
if(req.session.user){
user = req.session.user;
}
res.Render( "users/food_add"、{title: 'release food-'+config.name、name:config.name、user:user});
} else if(req.method == "post"){
//データを取得します
var x = req.body.x;
var y = req.body.y;
var cat_id = req.body.cat_id;
var cat_name = req.body.cat_name;
varアドレス= req.body.address;
var title = req.body.title;
var desc = req.body.desc;
var content = req.body.content;
var pics = '';
var price = req.body.price;
var tags = req.body.tags;
var add_time = date.parse(new date())/1000;
var support = 0;
var uid = req.body.uid;
//画像のアップロードを処理します
//console.dir(req.files);
var file_obj = req.files.pics;
//console.log(file_obj.length);
var file_obj2 = [];
for(var i = 0; i <file_obj.length; i ++){
if(file_obj [i] .name){
file_obj2.push(file_obj [i]);
}
}
var length = file_obj2.length;
if(length> 0){
file_obj2.foreach(function(item、index){
if(item.path){
var tmppath = item.path;
var type = item.type;
var extension_name = "";
//指定されたディレクトリに移動し、通常はパブリック画像ファイルの下に置いてください
//移動時にパスが既に存在することを確認してください。そうしないと、エラーが報告されます
var tmp_name =(date.parse(new date())/1000);
tmp_name = tmp_name+''+(math.round(math.random()*9999));
//ファイルタイプを判断します
switch(type){
case 'image/pjpeg':extension_name = 'jpg';
壊す;
case 'image/jpeg':extension_name = 'jpg';
壊す;
case 'image/gif':extension_name = 'gif';
壊す;
case 'image/png':extension_name = 'png';
壊す;
case 'image/x-png':extension_name = 'png';
壊す;
case 'image/bmp':extension_name = 'bmp';
壊す;
}
var tmp_name = tmp_name+'。'+extension_name;
var targetPath = 'public/images/' + tmp_name;
console.log(tmppath);
//アップロードされた一時ファイルを指定されたディレクトリに移動します
fs.rename(tmppath、targetpath、function(err){
if(err){
エラーを投げます。
}
if(pics){
pics += '、' +tmp_name;
}それ以外{
pics += tmp_name;
}
//完了したかどうかを判断します
//console.log(index);
//一時ファイルを削除します
fs.unlink(tmppath、function(){
if(err){
エラーを投げます。
}それ以外{
if((index+1)== length){
console.log(targetpath);
//アップロード処理が完了しました
//データ
var data = {
x:x、//経度
y:y、//寸法
cat_id:cat_id、//カテゴリID
cat_name:cat_name、//カテゴリ名
アドレス:アドレス、//アドレス
タイトル:タイトル、//タイトル
DESC:DESC、//はじめに
コンテンツ:コンテンツ、//コンテンツ
写真:写真、//絵のフィールド、「、」で複数の写真を分離する
価格://価格
タグ:タグ、//タグは '、'によって区切られています
add_time:add_time、//サポート
サポート://デフォルトのサポートは0です
uid:uid //ユーザーIDは匿名であることができます
};
food_predao.insert(data、function(err、food){
if(err){
Res.Json({err:100、content: 'データベースエラー'});
}それ以外{
res.Json({err:0、content: 'lelease succunt!'、data:food});
}
});
}
}
});
});
}
});
}それ以外{
//写真はありません
//データ
var data = {
x:x、//経度
y:y、//寸法
cat_id:cat_id、//カテゴリID
cat_name:cat_name、//カテゴリ名
アドレス:アドレス、//アドレス
タイトル:タイトル、//タイトル
DESC:DESC、//はじめに
コンテンツ:コンテンツ、//コンテンツ
写真:写真、//絵のフィールド、「、」で複数の写真を分離する
価格://価格
タグ:タグ、//タグは '、'によって区切られています
add_time:add_time、//サポート
サポート://デフォルトのサポートは0です
uid:uid //ユーザーIDは匿名であることができます
};
food_predao.insert(data、function(err、food){
if(err){
Res.Json({err:100、content: 'データベースエラー'});
}それ以外{
res.Json({err:0、content: 'lelease succunt!'、data:food});
}
});
}
}
};
3.ファイルを表示します(私は/views/users/food_add.ejsです)
コードコピーは次のとおりです。
<style>
.upload_item {width:50px;高さ:45px;オーバーフロー:隠された;ボーダー:2pxダッシュ#bfbfbf;フロート:左;マージン右:10px;}
.upload_item_add {width:50px;高さ:45px;表示:ブロック;ラインハイト:42px;テキストアライグ:センター;フォントサイズ:30px;カーソル:ポインター;}
.upload_input {}
</style>
<スクリプト>
var add = {
upload_click:function(obj){
$(obj).parent()。children()。eq(1).click();
}、
upload_change:function(obj){
var Path;
path = $(obj).val(); // c:/documents and settings/hud/desktop/addfile.jpg
var aa;
aa = path.split( '。');
//ALERT(aa [aa.length-1]); // jpg結果
var名;
name = path.split( '//');
var bb = name [name.length-1];
// alert(bb.substr(0、bb.indexof( '。'))); // addfile result
$(obj).parent()。children()。eq(0).css( 'fontsize'、 '12px');
$(obj).parent()。css( 'borderstyle'、 'solid');
$(obj).parent()。children()。eq(0).html(bb.substr(0、bb.indexof( '。')));
if($(obj).parent()。attr( 'index')== 1){// newを追加します
var html = '<div index = "1"> <span onclick = "add.upload_click(this)">+</span> <入力タイプ= "file" name "name" name = "pics" id = "pics" onchange = "add.upload_change(this)"/>> </div>';
$( '#upload_box')。append(html);
$(obj).parent()。attr( 'index'、 '0');
}
}
};
</script>
<form method = "post" action = "/add" enctype = "multipart/form-data">
<表>
<tr>
<td>経度:</td> <td> <入力タイプ= "text" name = "x" id = "x"/> </td>
</tr>
<tr>
<td> dimension:</td> <td> <入力タイプ= "text" name = "y" id = "y"/> </td>
</tr>
<tr>
<td> category:</td> <td> <select name = "cat_id"> <option value = "1">カテゴリ1 </option> </select> </td>
</tr>
<tr>
<td>アドレス:</td> <td> <入力タイプ= "text" name = "address" id = "address"/> </td>
</tr>
<tr>
<td>タイトル:</td> <td> <入力型= "text" name = "title" id = "title"/> </td>
</tr>
<tr>
<TD>はじめに:</td> <td> <入力タイプ= "text" name = "desc" id = "desc"/> </td>
</tr>
<tr>
<td> content:</td> <td> <入力タイプ= "text" name = "content" id = "content"/> </td>
</tr>
<tr>
<td> picture:</td> <td id = "upload_box"> <div index = "0" style = "display:none;"> <span onclick = "add.upload_click(this)">+</span> <入力タイプ= "ファイル"ファイル "name =" pics "id" "pics" "index =" " onclick = "add.upload_click(this)">+</span> <入力タイプ= "file" name "name" id "id" pics "onchange =" add.upload_change(this) "/> </div> </td>
</tr>
<tr>
<td>価格:</td> <td> <入力タイプ= "text" name = "rish" id = "rice"/> </td>
</tr>
<tr>
<td>タグ:</td> <td> <入力タイプ= "text" name = "tags" id = "tags"/> </td>
</tr>
<tr>
<td colspan = "2"> <入力タイプ= "submit" value = "submit" /> < /td>
</tr>
</table>
</form>