0

クライアント側用とサーバー側用の 2 つのプロジェクトを作成しました。動作していないようです。POSTリクエストがWebフォームのファイル形式と一致していないことに関係があるのではないかと考えました。画像を Web サーバーに送信したいと考えています。最初は自分のコンピューターから、将来は Android フォンからやりたいと思っています。これは私が持っているコードです:

クライアント側:

public class Send {
public static void main(String[] args) throws Exception {
    String filePath = "C:\\Users\\Mat\\Desktop\\Pic.bmp";
    String picName = "Pic.bmp";

    HttpClient httpclient = new DefaultHttpClient();

    try {
        HttpPost httppost = new HttpPost("http://localhost:8080/springmvc/upload");

        FileBody pic = new FileBody(new File(filePath));
        StringBody name = new StringBody(picName);

        MultipartEntity requestEntity = new MultipartEntity();
        requestEntity.addPart("text", name);
        requestEntity.addPart("file", pic);

        httppost.setEntity(requestEntity);

        System.out.println("executing request " + httppost.getRequestLine());
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity responseEntity = response.getEntity();

        System.out.println("----------------------------------------");
        System.out.println(response.getStatusLine());
        if (responseEntity != null) {
            System.out.println("Response content length: " + responseEntity.getContentLength());
        }
        EntityUtils.consume(responseEntity);
    } finally {
        try {
            httpclient.getConnectionManager().shutdown();
        } 
        catch (Exception ignore) {
        }
    }
}
}

「System.out.println(response.getStatusLine());」より 「HTTP/1.1 400 Bad Request」という出力が表示されます


サーバー側 (ウェブサーバー):

コントローラ:

@Controller
public class HomeController {@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFormUpload(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) throws IOException {
    if (!file.isEmpty()) {
        byte[] bytes = file.getBytes();
        FileOutputStream fos = new FileOutputStream(
                "C:\\Users\\Mat\\Desktop\\image.bmp");
        try {
            fos.write(bytes);
        } finally {
            fos.close();
        }
        return "works";
    } else {
        return "doesn't work";
    }
}

}

.jsp ファイル (私が想定する形式):

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
    <title>Upload a file please</title>
</head>
<body>
    <h1>Please upload a file</h1>
    <form method="post" action="/form" enctype="multipart/form-data">
        <input type="text" name="name"/>
        <input type="file" name="file"/>
        <input type="submit"/>  
    </form>
</body>

豆:

    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean> 

<!-- Declare explicitly, or use <context:annotation-config/> -->
<bean id="HomeController" class="net.codejava.springmvc.HomeController">

</bean>

追加された依存関係 (私は MVC テンプレートからプロジェクトを作成したので、最初からたくさんあります):

<!--  UploadImage -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3</version>
    </dependency>

クライアント側からの手作業を一切行わずに、クライアントに特定の名前の写真を送信してもらいたい。

STS と Spring MVC フレームワークを使用しています。

誰かが私が間違っていることを理解できれば幸いです!
よろしくお願いします!

4

1 に答える 1