Nodejs 通过Java提交文件并保存到本地的例子?

Nodejs 通过Java提交文件并保存到本地的例子?

通过Java提交文件到Nodejs,Nodejs获取文件保存到本地?求一例子。 没什么特殊要求。 只需要把代码详细贴出并且有注释即可!

4 回复

要在Node.js中接收通过Java上传的文件,并将其保存到本地服务器,可以使用multer中间件来处理文件上传。下面是一个详细的步骤说明和示例代码。

示例代码

首先确保你已经安装了必要的依赖包:

npm install express multer

Java客户端代码(用于上传文件)

假设你有一个简单的Java客户端代码片段,使用HTTP POST请求将文件发送到Node.js服务器:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class FileUploader {
    public static void main(String[] args) throws IOException {
        String fileLocation = "/path/to/your/file.txt";
        String serverUrl = "http://localhost:3000/upload";

        URL url = new URL(serverUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "application/octet-stream");

        try (FileInputStream fis = new FileInputStream(new File(fileLocation));
             OutputStream os = connection.getOutputStream()) {
            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = fis.read(buffer)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
        }

        int responseCode = connection.getResponseCode();
        System.out.println("Response Code : " + responseCode);
    }
}

Node.js服务器端代码

接下来是Node.js服务器端代码,它使用Express和Multer来处理文件上传:

const express = require('express');
const multer = require('multer');

// 设置存储引擎
const storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, 'uploads/') // 指定文件存储路径
  },
  filename: function(req, file, cb) {
    cb(null, file.originalname) // 保持原始文件名
  }
});

const upload = multer({ storage });

const app = express();

// 创建上传目录
const fs = require('fs');
if (!fs.existsSync('uploads')) {
  fs.mkdirSync('uploads');
}

// 设置路由处理文件上传
app.post('/upload', upload.single('file'), (req, res) => {
  res.send('File uploaded successfully!');
});

// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

解释

  • Java客户端:我们创建了一个简单的Java程序,该程序读取一个文件并将文件内容作为二进制数据发送到指定的Node.js服务器。

  • Node.js服务器:服务器使用Express框架接收文件上传。Multer中间件被用来解析和存储上传的文件到指定的目录(在这个例子中是uploads/)。服务器监听端口3000,并响应文件上传成功的信息。

确保在运行Java客户端之前启动Node.js服务器。这将使Java客户端能够连接到服务器并上传文件。


這個事情用nodejs做不好吧。。。。。

nodejs服务器地址: 192.168.0.100:8000. nodejs服务器保存文件的路由: /file/upload,使用fs将req.body中的内容保存到本地即可。

只需要java代码向http://192.168.0.100:8000/file/upload 发送http post请求即可。

要在Node.js中接收通过Java提交的文件并保存到本地,我们可以使用multer库来处理文件上传。以下是一个简单的例子,包括Java端发送文件的部分和Node.js端接收文件并保存到本地的代码。

Java 端

首先,你需要确保你的Java应用程序能够发送一个文件到Node.js服务器。这里是一个简单的HTTP POST请求示例:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class FileUploader {
    public static void main(String[] args) throws IOException {
        String fileName = "path/to/your/file.txt"; // 文件路径
        URL url = new URL("http://localhost:3000/upload");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "multipart/form-data");

        try (OutputStream os = conn.getOutputStream()) {
            FileInputStream fis = new FileInputStream(new File(fileName));
            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = fis.read(buffer)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            fis.close();
        }

        if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
            throw new RuntimeException("Failed to upload file, HTTP error code : " + conn.getResponseCode());
        }

        conn.disconnect();
    }
}

Node.js 端

接下来是Node.js后端,它将使用multer来接收文件,并将其保存到服务器上指定的位置。

  1. 首先安装必要的依赖:
npm install express multer
  1. 创建一个简单的Express应用来处理文件上传:
const express = require('express');
const multer = require('multer');

const app = express();
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/') // 目标文件夹
    },
    filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now()) // 使用日期作为文件名
    }
});

const upload = multer({ storage: storage });

app.post('/upload', upload.single('file'), (req, res, next) => {
    res.status(200).send('File uploaded successfully.');
});

app.listen(3000, () => {
    console.log('Server started on port 3000');
});

在这个例子中,我们设置了一个单文件上传的路由/upload,使用了multer的中间件来处理文件上传。上传的文件将被存储在名为uploads的目录下,文件名由文件字段名称加上当前时间戳组成。

以上就是从Java端发送文件到Node.js服务器,并在服务器端保存文件的完整示例。

回到顶部