1

こんにちは、深刻な問題があります。クライアント マシンに zip ファイルがあり、その zip ファイルをサーバー マシンの特定の場所にアップロードする必要があります。クライアント マシンはスナップショットの zip ファイルを自動的に作成し、アップロードする必要があります。そのzipファイルをプログラムでサーバー上の特定の場所に配置し、その間にユーザーの操作はまったくありません。誰でもこのタスクの実行方法を提案できますか. 同じためにJavaコードを書く必要があります。ファイルのアップロードを示すリンクをいくつか試しましたが、目的を果たすことができたものはありませんでした。

前もって感謝します。

4

2 に答える 2

1

クライアントでApacheHttpComponentsを使用できます。クライアントがファイルをマルチパートポストhttpリクエストとしてアップロードできるようにするための多くの例を見つけることができます。

次に、ファイルをストリームとして受信できる単純なサーブレットを作成する必要があります。サーブレットの実装を支援するために、使用できる別のライブラリがあります。ApacheCommons FileUpload

于 2012-10-04T08:08:37.450 に答える
1

外部ライブラリを使用せずに、Servlet 3.0 API を使用してマルチパート ポストでファイルを受信して​​保存します。:

最初に、マルチパートを有効にして「Post」経由でファイルをアップロードする必要があります。これは、大きなファイルをアップロードするためのより便利な方法であるためです。「パーツ」「ファイル」に名前を付ける必要があります。各パーツにはヘッダーがあります。コードはヘッダーを読み取って、元のファイル名を使用するか、アップロード時間に応じて設定します。このコードは、アップロード リクエストを確認するための簡単なテキストを書き込みます。

import java.io.IOException;
import java.io.PrintWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@MultipartConfig
public class UploadServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        Part part = request.getPart("file");

        Matcher m = Pattern.compile("filename=\"(.*)\"", Pattern.CASE_INSENSITIVE).matcher(
                part.getHeader("content-disposition"));
        String filename;
        if (m.find()) {
            filename = m.group(1);
        } else {
            filename = "upload" + System.currentTimeMillis();
        }
        part.write("C:/path/" + filename);
        out.println("File '" + filename + "' uploaded.");
    }
}
于 2012-10-04T08:38:40.660 に答える