将图像上载到服务器(Java)
我想从客户端接收图像并将其保存到文件夹中。当我从将图像上载到服务器(Java),java,spring,image,http,upload,Java,Spring,Image,Http,Upload,我想从客户端接收图像并将其保存到文件夹中。当我从POST-MAN接收到它时,它只生成字节: ˇÿˇ‡ JFIF H H ˇ· XExif MM * ái & † † † ± ˇÌ 8Photoshop 3.0 8BIM 8BIM % ‘ åŸè ≤ ÈÄ òϯB~ˇ¿ ± " ˇƒ 没关系,我可以接收并保存它 但当我尝试从IOS接收信息时,它也会在体内向我发送一些信息: --Boundary+71ADC8832D9A5F95 Content-Disposition: form-da
POST-MAN
接收到它时,它只生成字节:
ˇÿˇ‡ JFIF H H ˇ· XExif MM * ái & † † † ± ˇÌ 8Photoshop 3.0 8BIM 8BIM % ‘ åŸè ≤ ÈÄ òϯB~ˇ¿ ± " ˇƒ
没关系,我可以接收并保存它
但当我尝试从IOS接收信息时,它也会在体内向我发送一些信息:
--Boundary+71ADC8832D9A5F95
Content-Disposition: form-data; name="file"; filename="fileName.jpg"
Content-Type: image/jpeg
ˇÿˇ‡ JFIF H H ˇ· XExif MM * ái & † † † ± ˇÌ 8Photoshop 3.0 8BIM 8BIM % ‘ åŸè ≤ ÈÄ òϯB~ˇ¿ ± " ˇƒ
我怎样才能从中得到唯一的图像
我的Java代码是:
InputStream stream = request.getInputStream();
bytes = IOUtils.toByteArray(stream);
File file = new File("myfile/1.jpg");
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
ImageIO.write(img, "JPEG", file);
更新:对于多部分上传图像,我添加了代码:
if(request instanceof MultipartHttpServletRequest){
/**
* multipart
*/
MultipartHttpServletRequest mrequest = (MultipartHttpServletRequest) request;
Iterator<String> itr = mrequest.getFileNames();
MultipartFile file = mrequest.getFile(itr.next());
bytes = file.getBytes();
}
if(multipartTTPServletRequest的请求实例){
/**
*多部分
*/
MultipartTTpServletRequest mrequest=(MultipartTTpServletRequest)请求;
迭代器itr=mrequest.getFileName();
MultipartFile file=mrequest.getFile(itr.next());
字节=file.getBytes();
}
但它不是
multipathttpservletrequest
的实例。为什么?我找到了解决办法:
spring和tomcat配置中的问题。。。。我补充说
<Context
allowCasualMultipartParsing="true" />
试试这个代码。这对我很有效。将代码放入带有标记的jsp页面本身
我相信您的
元素缺少enctype='multipart/form data'
<代码>需要这一点,我认为IOS会自动适应这一点,而您的其他浏览器则不会。你应该总是得到IOS发送的数据,你必须处理不同的数据格式。Spring(您标记的)支持处理文件上传格式,因此请查看Spring文档了解如何使用它。那么,如何接收此多部分/表单数据?是的,这是我的问题我更新了我的第一条评论,但简短的回答是:查看Spring文档了解如何处理文件上传。请参阅更新的主题您使用Spring MVC吗?通常使用SpringMVC,您不会直接处理请求对象。您可以指定所需的参数,Spring将为您映射这些参数。
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
return resolver;
}
<%
Connection conn=null;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn = DriverManager.getConnection(//your connection string//);
PreparedStatement psImageInsertDatabase=null;
PreparedStatement psImageInsertDatabase2=null;
byte[] b=null;
try{
String temp=(String)session.getAttribute("myId");
String sqlImageInsertDatabase="insert into upload_image (bImage) values (?)";
String sqlImageInsertDatabase2="UPDATE [dbo].[upload_image] SET [iImageID] = '"+temp+"' WHERE [iImageID] is null AND [bImage] is not null";
psImageInsertDatabase=conn.prepareStatement(sqlImageInsertDatabase);
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
List items = sfu.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
b = item.get();
}
}
psImageInsertDatabase.setBytes(1,b);
psImageInsertDatabase.executeUpdate();
psImageInsertDatabase2=conn.prepareStatement(sqlImageInsertDatabase2);
psImageInsertDatabase2.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();
response.sendRedirect("addimage.jsp");
}
%>