當前位置:首頁 » 文件管理 » nodejs上傳

nodejs上傳

發布時間: 2022-05-01 16:44:25

1. angularjs結合nodejs實現文件的上傳怎麼弄

下面就用「multiparty」實現一個版本。
1.使用express(版本是4.11.x)創建一個項目,採用默認的jade作為模版引擎。
2.在項目目錄中,通過npm install multiparty進行安裝必要組件。
3.修改views/index.jade,如下做一個簡單的用於文件上傳的form。

1 extends layout
2
3 block content
4 form(method='post', action='/file/uploading', enctype='multipart/form-data')
5 input(name='inputFile', type='file', multiple='mutiple')
6 input(name='btnUp', type='submit',value='上傳')

4.修改routes/index.js,實現上傳頁面和上傳響應的後台代碼。

1 var express = require('express');
2 var router = express.Router();
3 var multiparty = require('multiparty');
4 var util = require('util');
5 var fs = require('fs');
6
7 /* 上傳頁面 */
8 router.get('/', function(req, res, next) {
9 res.render('index', { title: 'Express' });
10 });
11
12 /* 上傳*/
13 router.post('/file/uploading', function(req, res, next){
14 //生成multiparty對象,並配置上傳目標路徑
15 var form = new multiparty.Form({uploadDir: './public/files/'});
16 //上傳完成後處理
17 form.parse(req, function(err, fields, files) {
18 var filesTmp = JSON.stringify(files,null,2);
19
20 if(err){
21 console.log('parse error: ' + err);
22 } else {
23 console.log('parse files: ' + filesTmp);
24 var inputFile = files.inputFile[0];
25 var uploadedPath = inputFile.path;
26 var dstPath = './public/files/' + inputFile.originalFilename;
27 //重命名為真實文件名
28 fs.rename(uploadedPath, dstPath, function(err) {
29 if(err){
30 console.log('rename error: ' + err);
31 } else {
32 console.log('rename ok');
33 }
34 });
35 }
36
37 res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
38 res.write('received upload:\n\n');
39 res.end(util.inspect({fields: fields, files: filesTmp}));
40 });
41 });
42
43 mole.exports = router;

完成。

「multiparty」的用法詳見:
www.npmjs.com/package/multiparty
github.com/andrewrk/node-multiparty

2. 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規定的規范;

3. 如何使用 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+" ");
}
。。。。。。
這樣就實現了上傳文件至資料庫

4. nodejs可以上傳大文件嗎

可以。不過要修改。

處理方式為在nodeJs的app.js文件中寫一個use中間件將其大小限制給修改了。

修改代碼:(app.js中)

[javascript]view plain

  • app.use(express.bodyParser({limit:"5000kb"}));

  • app.use(express.json({limit:'5000kb'}));


  • 這部分的代碼順序:(這個貌似沒多大作用,不過還是留一個)

5. 最近在研究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」);
}
})
}
});

};

6. nodejs 上傳文件哪個插件好

前端要用easyui的filebox插件,然後點擊按鈕後會非同步上傳

7. 上傳nodejs工程到伺服器 提示需要載入一些用不到的模塊

你好,請檢查你的package.json內的Dependencies或者DevDependencies(依賴項)欄位是否包含報錯的模塊及版本信息。
如果你本地是採用npm
install
xxx的方式安裝模塊是不會將該模塊添加到依賴項的。
你需要通過npm
install
xxx
--save的方式進行模塊安裝。才能保證伺服器和本地的依賴項是一樣的,這樣伺服器在安裝依賴時才會讓node_moles和本地保持一致。
學習Linux的話,推薦學習一下《Linux就該這么學》

8. 如何提高nodejs的上傳並發

不是node.js能應對高並發,其他人不能,而只是node.js用了另外的辦法而已。

node.js的http mole處理web request都是用的非同步的function,這樣系統在等待文件的IO、資料庫的query這些不需要這個進程的程序親自處理的事情時,可以先去開始處理下一個web request。所以,node.js只要啟動跟你的cpu的核心數一樣多的進程數,就可以保證使用到你全部的計算能力。
如果用其他的語言,比如用python,你在設置mod_wsgi的時候可以設定讓它啟動多少個thread,這樣如果一個thread正停在那兒等待io的時候,雖然這個thread不能像node.js那樣先去處理下一個request,但你有別的空閑的thread可以處理這個request,操作系統會自動把cpu分配給各個thread。

9. 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.

熱點內容
怎麼設置登錄區域網伺服器憑據 發布:2024-11-16 09:49:46 瀏覽:538
閑置電腦家用下載伺服器 發布:2024-11-16 09:48:28 瀏覽:750
java工程師面試問題 發布:2024-11-16 09:28:36 瀏覽:233
用什麼引擎導出的安卓安裝包不大 發布:2024-11-16 09:09:06 瀏覽:474
安卓手機如何設置轉接 發布:2024-11-16 09:08:55 瀏覽:423
sql行業 發布:2024-11-16 09:04:07 瀏覽:295
如何查看電腦硬碟的介面速率緩存 發布:2024-11-16 08:59:42 瀏覽:221
c語言局部變數與全局變數 發布:2024-11-16 08:37:38 瀏覽:489
安卓蘋果是什麼意思啊 發布:2024-11-16 08:36:03 瀏覽:872
泛型方法編譯 發布:2024-11-16 08:36:01 瀏覽:875