我想从客户端图片接收并将其保存到文件夹中。当我从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();
}
但它不是MultipartHttpServletRequest
的实例。为什么呢?
答案 0 :(得分:1)
我找到了解决方案:
spring和tomcat配置问题....我添加了
<Context
allowCasualMultipartParsing="true" />
在tomcat的server.xml中。
然后将bean添加到WebConfig:
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("utf-8");
return resolver;
}
答案 1 :(得分:1)
试试这段代码。它对我有用。将代码放在jsp页面中,并使用&lt; %%&gt;标签
<%
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");
}
%>