nodepost上傳文件
你說的對象存儲是雲么? 比如七牛雲?
像這一類的都有提供的API,可以通過他們提供的API上傳文件的。
B. node.js 上傳文件中間件哪個好用
最簡單的做法是通過「connect-multiparty」中間件實現上傳。
通過在項目中npm install connect-multiparty進行安裝。
用法:
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/upload', multipartMiddleware, function(req, resp) {
console.log(req.body, req.files);
// don't forget to delete all req.files when done
});
上傳後,上傳的文件會在臨時目錄中生成一個臨時文件,具體可將req.files列印出查看具體文件路徑。
只要在注釋的地方將臨時文件移動並重命名到實際目錄中即可完成上傳功能。
簡單。
C. nodejs可以上傳大文件嗎
可以。不過要修改。
處理方式為在nodeJs的app.js文件中寫一個use中間件將其大小限制給修改了。
修改代碼:(app.js中)
[javascript]view plain
app.use(express.bodyParser({limit:"5000kb"}));
app.use(express.json({limit:'5000kb'}));
這部分的代碼順序:(這個貌似沒多大作用,不過還是留一個)
D. 前端上傳的視頻文件node如何處理
摘要 前端提交數據給node的幾種處理方式,從最基本的get和post請求,到圖片上傳,再到分塊上傳,由淺入深。
E. 如何使用 NodeJS 將文件或圖像上傳到伺服器
下面先介紹上傳文件到伺服器(多文件上傳):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;
public class upload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
try {
DiskFileUpload fu = new DiskFileUpload();
// 設置允許用戶上傳文件大小,單位:位元組,這里設為2m
fu.setSizeMax(2*1024*1024);
// 設置最多隻允許在內存中存儲的數據,單位:位元組
fu.setSizeThreshold(4096);
// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄
fu.setRepositoryPath("c://windows//temp");
//開始讀取上傳信息
List fileItems = fu.parseRequest(request);
// 依次處理每個上傳的文件
Iterator iter = fileItems.iterator();
//正則匹配,過濾路徑取文件名
String regExp=".+////(.+)$";
//過濾掉的文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//忽略其他不是文件域的所有表單信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){
if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{
//保存上傳的文件到指定的目錄
//在下文中上傳文件至資料庫時,將對這里改寫
item.write(new File("d://" + m.group(1)));
out.print(name+" "+size+"");
}
catch(Exception e){
out.println(e);
}
}
else
{
throw new IOException("fail to upload");
}
}
}
}
catch (IOException e){
out.println(e);
}
catch (FileUploadException e){
out.println(e);
}
}
}
現在介紹上傳文件到伺服器,下面只寫出相關代碼:
以sql2000為例,表結構如下:
欄位名:name filecode
類型: varchar image
資料庫插入代碼為:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");
代碼如下:
。。。。。。
try{
這段代碼如果不去掉,將一同寫入到伺服器中
//item.write(new File("d://" + m.group(1)));
int byteread=0;
//讀取輸入流,也就是上傳的文件內容
InputStream inStream=item.getInputStream();
pstmt.setString(1,m.group(1));
pstmt.setBinaryStream(2,inStream,(int)size);
pstmt.executeUpdate();
inStream.close();
out.println(name+" "+size+" ");
}
。。。。。。
這樣就實現了上傳文件至資料庫
F. nodejs怎麼實現多文件上傳
前端formdata或者Ajax上傳文件 Node端:用multiparty接收文件,再用fs.rename將文件存儲到你需要的位置。 var MULTIPARTY = require('multiparty'); var FS = require('fs'); var saveTowerFile = function (req, res, next) { var form = new M.
G. nodejs上傳文件到伺服器保存原始文件名
如下:
1. index.js模塊: 程序入口, 有伺服器(server.js)和路由(route.js)和處理(handler.js)模塊組成;
2. server.js模塊: 專門處理不同路由, 並做相應的處理;
3. route.js模塊: 請求的地址, 處理方法, 響應, 請求;
4. handler.js模塊: 封裝不同的方法,交由路由route.js模塊來選擇調用;
5. HTML文件: 存在HTML文件; 6. package.json模塊: CommonJS規定的規范;
H. 最近在研究nodejs如何實現文件上傳功能
前端formdata或者Ajax上傳文件
Node端:用multiparty接收文件,再用fs.rename將文件存儲到你需要的位置。
var MULTIPARTY = require('multiparty');
var FS = require('fs');
var saveTowerFile = function (req, res, next) {
var form = new MULTIPARTY.Form({uploadDir: "../appData/excel/"});
form.parse(req, function (err, fields, files) {
if (err) {
console.log("上傳失敗!" + err);
var errcode = {result: "失敗"};
res.send(errcode);
return;
} else {
var inputFile = files.file[0];
var uploadedPath = inputFile.path;
var dstPath = '../appData/excel/' + UUID.v1();
FS.rename(uploadedPath, dstPath, function(err) {
if (err) {
var errcode = {result: "失敗"};
res.send(errcode);
return;
} else {
debug('rename ok');
res.send(「OK」);
}
})
}
});
};
I. 求POST上傳文件的代碼
使用smartuplaod組件的 部分代碼 原因很簡單 這里發不完全部的
uploadFile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="com.jspsmart.upload.*"%>
<%
// 設定請求編碼方式,否則遇到中文就會亂碼
request.setCharacterEncoding("gb2312");
%>
<html>
<head>
<title>上傳文件實例</title>
</head>
<body>
<h2>上傳文件實例</h2>
<hr>
請選擇上傳文件數量:
<select id="number" onchange="buildFileInput()">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>
<form name="form1" enctype="multipart/form-data" action="upload_do.jsp" method="post">
<div id="files"></div>
<input type="submit" name="Submit" value="提交" />
</form>
</body>
<script language="javascript">
//根據選擇的文件數量構造文件輸入框列表
function buildFileInput(){
//取得文件數量下拉列表值
var num = document.all.number.value;
//將現有的文件輸入框清除
clearFileInput();
//構造出新的文件輸入框列表
for (var i=0;i<num;i++){
//創建一個div標簽節點
filediv = document.createElement("div");
//創建一個文本節點
labeltext = document.createTextNode("第"+(i+1)+"個文件:");
//創建一個文件輸入框節點
fileinput = document.createElement("input");
fileinput.type = "file";
fileinput.name = "file"+i;
//創建一個文本節點
memotext = document.createTextNode(" 第"+(i+1)+"個文件備註:");
//創建一個文本輸入框節點
memoinput = document.createElement("input");
memoinput.type = "text";
memoinput.name = "memo"+i;
//將文本節點追加成div標簽節點的子節點
filediv.appendChild(labeltext);
//將文件輸入框節點追加成div標簽節點的子節點
filediv.appendChild(fileinput);
//將文本節點追加成div標簽節點的子節點
filediv.appendChild(memotext);
//將文本輸入框節點追加成div標簽節點的子節點
filediv.appendChild(memoinput);
//將div標簽節點追加成files的子節點
document.all.files.appendChild(filediv);
}
}
//將現有的文件輸入框清除
function clearFileInput(){
while (document.all.files.childNodes.length>0)
document.all.files.removeChild(document.all.files.childNodes[0]);
}
//初始化文件輸入框列表
buildFileInput();
</script>
</html>
J. 如何用nodejs通過post發送multipart/form-data類型的http請求
//發送單條消息給介面方app.post("/sendMsgToAByPost",function(req,res,next){
//我的帖子:http://cnodejs.org/topic/4ffed8544764b729026b1da3
//http://yefeng.iteye.com/blog/315847
//http://stackoverflow.com/questions/5744990/how-to-upload-a-file-from-node-js
//http://stackoverflow.com/questions/9943010/node-js-post-file-to-server
console.log(req.files);
console.log(req.files.media.size);
varboundaryKey=Math.random().toString(16);//隨機數,目的是防止上傳文件中出現分隔符導致伺服器無法正確識別文件起始位置
console.log(boundaryKey);
varoptions={
host:'api.com',
port:443,
path:'/media?type=image&access_token='+accessToken,
method:'POST'
};
varreqHttps=https.request(options,function(resHttps){
console.log("statusCode:",resHttps.statusCode);
console.log("headers:",resHttps.headers);
resHttps.on('data',function(body1){
console.log("body:"+body1);
});
});
varpayload='--'+boundaryKey+' '
//useyourfile'smimetypehere,ifknown
+'Content-Type:image/jpeg '
//"name"isthenameoftheformfield
//"filename"isthenameoftheoriginalfile
+'Content-Disposition:form-data;name="media";filename="aaa.jpg" '
+'Content-Transfer-Encoding:binary ';
console.log(payload.length);
varenddata=' --'+boundaryKey+'--';
console.log('enddata:'+enddata.length);
reqHttps.setHeader('Content-Type','multipart/form-data;boundary='+boundaryKey+'');
reqHttps.setHeader('Content-Length',Buffer.byteLength(payload)+Buffer.byteLength(enddata)+req.files.media.size);
reqHttps.write(payload);
varfileStream=fs.createReadStream("D:\aaa.jpg",{bufferSize:4*1024});
fileStream.pipe(reqHttps,{end:false});
fileStream.on('end',function(){
//marktheendoftheoneandonlypart
reqHttps.end(enddata);
});
reqHttps.on('error',function(e){
console.error("error:"+e);
});
});