0

我要将图片从安卓手机发送到我电脑上的本地网络服务器。我想将图片保存到本地服务器上的文件夹中。我的计划是编写某种控制器来处理接收到的图片并保存它。所以基本上我认为我需要创建一个控制器来接收参数(图片)并将其保存到服务器的文件夹中。我一直在寻找,还没有找到我要找的东西。

因此我想知道的是:
这样的控制器是如何编写的。



我目前正在使用 Apache Tomcat/7.0.39 Web 服务器,通过 STS 使用 Spring MVC 框架,我的操作系统是 Windows 7。

感谢我能得到的任何帮助!
代码示例将不胜感激。

谢谢你,
马特

4

3 回答 3

0

Apache Commons FileUpload非常容易用于处理多部分表单帖子。我认为我没有将它与 Spring MVC 一起使用,但有一些例子

于 2013-05-17T12:46:25.073 回答
0

对于类似的功能(将照片从 Android 加载到 servlet),这是我使用的 Android 客户端代码(稍作编辑以便在此处发布):

URI uri = URI.create(// path to file);

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.STRICT);
// several key-value pairs to describe the data, one should be filename
entity.addPart("key", new StringBody("value"));

File inputFile = new File(photoUri.getPath());
// optionally reduces the size of the photo (you can replace with FileInputStream)
InputStream photoInput = getSizedPhotoInputStream(photoUri);
entity.addPart("CONTENT", new InputStreamBody(photoInput, inputFile.getName()));

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost(uri); 
HttpContext localContext = new BasicHttpContext();

httppost.setEntity(entity);     
HttpResponse response = httpclient.execute(httppost, localContext);

这是接收它的代码。首先,确保将您的 servlet 类标记为支持多部分消息:

@MultipartConfig
public class PhotosServlet extends HttpServlet

然后是身体的相关部分:

HttpEntity entity = new InputStreamEntity(request.getPart("CONTENT").getInputStream(), contentLength);
InputStream inputFile = entity.getContent();

// string extension comes from one of the key-value pairs
String extension = request.getParameter(//filename key);

// first write file to a file
File images = new File(getServletContext().getRealPath("images"));
File filePath = File.createTempFile("user", extension, images);
writeInputDataToOutputFile(inputFile, filePath); // just copy input stream to output stream
String path = filePath.getPath();

logger.debug("Wrote new file, filename: " + path);

希望能帮助到你。

于 2013-05-18T03:36:07.503 回答
0

这是我将 STS 与 MVC 框架模板一起使用的解决方案:

控制器:

@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="/upload" enctype="multipart/form-data">
         <input type="file" name="file"/>
        <input type="submit"/>  
    </form>
</body>

于 2013-05-19T10:16:29.687 回答