Hi,
ich versuche gerade verzweifelt den multipart upload einzurichten. Ich verwende Spring MVC als Server Backend und habe dort einige rest services eingerichtet und als WebFrontend nutze ich Angularjs. Der Fehler hat im Moment nichts mit Angular zutun ich nutze zum testen erst einmal iene normale html seite mit einem Form-Element für den upload und ich nutze keine xml files nur java config.
Mein aktueller Aufbau sieht so aus:
Upload controller:
Webinitializer:
WebCOnfig:
und ApplicationCOnfig:
Ich habe nun einfach auf nem selben lokalen Rechner eine html seite mit folgendem Inhalt erstellt:
uploaden will ich damit csv files, wenn ich eines auswähle und einen namen vergebe dann kommt folgende Fehlermeldung:
"HTTP Status 400- Required String parameter 'name' is not present" wenn ich name als nicht required setze dann kommt die selbe Fehlermeldung mit 'file'
weiß einer wo hier der Fehler liegt ? Habe ich den MultipartUpload falsch eingerichtet oder stimmt irgendwas anderes nicht? Da ich tomcat verwende bzw einen servlet 3 container brauche ich ja diese 2 jars nicht einbinden oder !?
<!-- Apache Commons Upload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<!-- Apache Commons Upload -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
Soweit ich weiß braucht man für den Multipart upload einen MultipartFIlter und den StandardServletMultipartResolver, habe ich diese 2 vll falsch eingebunden oder liegt das Problem wo anderst ?
mfg stargate
ich versuche gerade verzweifelt den multipart upload einzurichten. Ich verwende Spring MVC als Server Backend und habe dort einige rest services eingerichtet und als WebFrontend nutze ich Angularjs. Der Fehler hat im Moment nichts mit Angular zutun ich nutze zum testen erst einmal iene normale html seite mit einem Form-Element für den upload und ich nutze keine xml files nur java config.
Mein aktueller Aufbau sieht so aus:
Upload controller:
Java:
@Controller
@RequestMapping("Upload")
@MultipartConfig(fileSizeThreshold=1024*1024*10, // 10 MB
maxFileSize=1024*1024*50, // 50 MB
maxRequestSize=1024*1024*100) // 100 MB
public class UploadController {
@RequestMapping(value="/upload", method=RequestMethod.GET)
public @ResponseBody String provideUploadInfo() {
return "You can upload a file by posting to this same URL.";
}
@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(@RequestParam("name") String name,
@RequestParam("file") MultipartFile file){
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded")));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + " into " + name + "-uploaded !";
} catch (Exception e) {
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name + " because the file was empty.";
}
}
}
Webinitializer:
Code:
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{ PersistenceContext.class,AppConfig.class,SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/Spring/*" };
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
CorsFilter cf=new CorsFilter();
MultipartFilter mpf=new MultipartFilter(); //MultipartFilter support
return new Filter[] {characterEncodingFilter,cf,mpf};
}
}
WebCOnfig:
Code:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "controller" })
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public MultipartResolver multipartResolver(){
return new StandardServletMultipartResolver();
}
}
und ApplicationCOnfig:
Code:
@Configuration
public class AppConfig {
@Bean
public Test getTest(){
return new Test();
}
}
Ich habe nun einfach auf nem selben lokalen Rechner eine html seite mit folgendem Inhalt erstellt:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data"
action="http://localhost:8081/project/Spring/Upload/upload">
File to upload: <input type="file" name="file"><br /> Name: <input
type="text" name="name"><br /> <br /> <input type="submit"
value="Upload"> Press here to upload the file!
</form>
</body>
</html>
uploaden will ich damit csv files, wenn ich eines auswähle und einen namen vergebe dann kommt folgende Fehlermeldung:
"HTTP Status 400- Required String parameter 'name' is not present" wenn ich name als nicht required setze dann kommt die selbe Fehlermeldung mit 'file'
weiß einer wo hier der Fehler liegt ? Habe ich den MultipartUpload falsch eingerichtet oder stimmt irgendwas anderes nicht? Da ich tomcat verwende bzw einen servlet 3 container brauche ich ja diese 2 jars nicht einbinden oder !?
<!-- Apache Commons Upload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<!-- Apache Commons Upload -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
Soweit ich weiß braucht man für den Multipart upload einen MultipartFIlter und den StandardServletMultipartResolver, habe ich diese 2 vll falsch eingebunden oder liegt das Problem wo anderst ?
mfg stargate
Zuletzt bearbeitet: