先上效果圖:
這是我當時做多圖片的代碼,拿出來給大家借鑒一下(有些地方需要親們自己改一下,大方向是對的)
總共涉及到三處文件(常規來說)
1.路由入口文件(我這里是/routes.js,很多時候會在/app.js)
//處理圖片上傳
//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 = "";
//移動到指定的目錄,一般放到public的images文件下面
//在移動的時候確定路徑已經存在,否則會報錯
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';
break;
case 'image/jpeg':extension_name = 'jpg';
break;
case 'image/gif':extension_name = 'gif';
break;
case 'image/png':extension_name = 'png';
break;
case 'image/x-png':extension_name = 'png';
break;
case 'image/bmp':extension_name = 'bmp';
break;
}
var tmp_name = tmp_name+'.'+extension_name;
var targetPath = 'public/images/' + tmp_name;
console.log(tmpPath);
//將上傳的臨時文件移動到指定的目錄下
fs.rename(tmpPath, targetPath , function(err) {
if(err){
throw err;
}
if(pics){
pics += ','+tmp_name;
}else{
pics += tmp_name;
}
//判斷是否完成
//console.log(index);
//刪除臨時文件
fs.unlink(tmpPath, function(){
if(err) {
throw err;
}else{
if((index+1)==length){
console.log(targetPath);
//上傳處理完成
//數據
var data = {
x:x,//經度
y:y,//維度
cat_id:cat_id,//分類id
cat_name:cat_name,//分類名稱
address:address,//地址
title:title,//標題
desc:desc,//簡介
content:content,//內容
pics:pics,//圖片字段,以','隔開多張圖片
price:price,//價格
tags:tags,//標簽 以','隔開多個
add_time:add_time,//支持度
support:support,//支持度 默認為0
uid:uid//用戶id 可匿名
};
food_preDao.insert(data, function (err, food) {
if(err){
res.json({err:100,content:'數據庫錯誤'});
}else{
res.json({err:0,content:'發布成功!',data:food});
}
});
}
}
});
});
}
});
}else{
//沒有圖片
//數據
var data = {
x:x,//經度
y:y,//維度
cat_id:cat_id,//分類id
cat_name:cat_name,//分類名稱
address:address,//地址
title:title,//標題
desc:desc,//簡介
content:content,//內容
pics:pics,//圖片字段,以','隔開多張圖片
price:price,//價格
tags:tags,//標簽 以','隔開多個
add_time:add_time,//支持度
support:support,//支持度 默認為0
uid:uid//用戶id 可匿名
};
food_preDao.insert(data, function (err, food) {
if(err){
res.json({err:100,content:'數據庫錯誤'});
}else{
res.json({err:0,content:'發布成功!',data:food});
}
});
}
}
};
var name;
name=path.split('//');
var bb=name[name.length-1];
//alert(bb.substr(0,bb.indexOf('.'))); //AddFile 結果
$(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){//新增
var html = '<div class="upload_item" index="1"><span class="upload_item_add" onclick="ADD.upload_click(this)">+</span><input type="file" name="pics" id="pics" class="upload_input" 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">
<table>
<tr>
<td>經度:</td><td><input type="text" name="x" id="x" /></td>
</tr>
<tr>
<td>維度:</td><td><input type="text" name="y" id="y" /></td>
</tr>
<tr>
<td>分類:</td><td><select name="cat_id"><option value="1">分類1</option></select></td>
</tr>
<tr>
<td>地址:</td><td><input type="text" name="address" id="address" /></td>
</tr>
<tr>
<td>標題:</td><td><input type="text" name="title" id="title" /></td>
</tr>
<tr>
<td>簡介:</td><td><input type="text" name="desc" id="desc" /></td>
</tr>
<tr>
<td>內容:</td><td><input type="text" name="content" id="content" /></td>
</tr>
<tr>
<td>圖片:</td><td id="upload_box"><div class="upload_item" index="0" style="display:none;"><span class="upload_item_add" onclick="ADD.upload_click(this)">+</span><input type="file" name="pics" id="pics" class="upload_input" onchange="ADD.upload_change(this)" /></div><div class="upload_item" index="1"><span class="upload_item_add" onclick="ADD.upload_click(this)">+</span><input type="file" name="pics" id="pics" class="upload_input" onchange="ADD.upload_change(this)" /></div></td>
</tr>
<tr>
<td>價格:</td><td><input type="text" name="price" id="price" /></td>
</tr>
<tr>
<td>標簽:</td><td><input type="text" name="tags" id="tags" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交" /></td>
</tr>
</table>
</form>
新聞熱點
疑難解答