Ich versuche ein Bild hochzuladen und es in einem bestimmten Ordner zu speichern. Das ist mein Controller:Das hochgeladene Bild wird nicht im Verzeichnis im Frühjahr gespeichert.
@RequestMapping(value = "/echofile",method = RequestMethod.POST)
public @ResponseBody HashMap<String, Object> echoFile(HttpServletRequest request, HttpSession session,
HttpServletResponse response , @ModelAttribute("uploadedFile") UploadedFile upldfile) throws Exception {
HashMap<String, Object> map = new HashMap<String, Object>();
if(request instanceof MultipartHttpServletRequest){
InputStream inputStream = null;
OutputStream outputStream = null;
MultipartFile multipartFile = ((MultipartRequest) request).getFile("file");
MultipartFile file = upldfile.getFile();
String fileName = file.getOriginalFilename();
System.out.println("filename:"+fileName);
upldfile.setFile(file);
String fileName2 = multipartFile.getOriginalFilename();
System.out.println("filename2:"+fileName2);
Long size = multipartFile.getSize();
String contentType = multipartFile.getContentType();
InputStream stream = multipartFile.getInputStream();
byte[] bytes = IOUtils.toByteArray(stream);
map.put("fileoriginalsize", size);
map.put("contenttype", contentType);
map.put("base64", new String(Base64Utils.encode(bytes)));
try {
// inputStream = ((MultipartFile) upldfile).getInputStream();
inputStream = file.getInputStream();
String webRootDir = session.getServletContext().getRealPath("/");
String url = "E:/Java_Project/EmployeeOnlineRegistrationForm/src/main/webapp/resources/image";
String pathFl = url + File.separator ;
File newFile = new File(webRootDir+pathFl+fileName);
if (!newFile.exists()) {
newFile.createNewFile();
}
outputStream = new FileOutputStream(newFile);
int read = 0;
// byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return map;
}
This is my JS ajax part:
var isJpg = function(name) {
return name.match(/jpg$/i)
};
var isPng = function(name) {
return name.match(/png$/i)
};
$(document).ready(function() {
var file = $('[name="file"]');
var imgContainer = $('#imgContainer');
var formData = new FormData();
formData.append('file', jQuery('input[type=file]')[0].files[0]);
$('#btnSubmit').click(function() {
var filename = $.trim(file.val());
if (!(isJpg(filename) || isPng(filename))) {
alert('Please browse a JPG/PNG file to upload ...');
return;
}
$.ajax({
url: "http://localhost:8080/EmployeeOnlineRegistrationForm/echofile",
type: "POST",
//data: formData,
data: new FormData(document.getElementById("fileForm")),
enctype: 'multipart/form-data',
processData: false,
modelAttribute:'uploadedFile',
contentType: false,
success: function(data){
imgContainer.html('');
//var obj = JSON.parse(response);
var img = '<img src="data:' + data.contenttype + ';base64,'
+ data.base64 + '"/>';
alert("success");
imgContainer.append(img);
},
error: function(){
alert('Error while request..');
}
});
});
});
Aber wenn ich Eingang ein Bild, mich Ajax alarmieren Erfolg, aber Bild ist in div
und auch habe ich gegeben, einen Weg speichern Sie das Bild auf diesem Ordner (spezifische Verzeichnis) nicht gezeigt, aber Das Bild wird nicht in diesem Ordner gespeichert. Was sollte ich tun?
Sie sollten nicht hochgeladenen Dateien in Ihrem Web-App, große Veränderung werden die Speicherung, dass die Dateien auf Ihren nächsten Einsatz verschwunden sind. Daneben ist die als 'URL' verwendete Zeichenfolge ebenfalls falsch. Bei der Deployment gibt es keine 'src/main /' usw. Also nicht sicher, welche Art von Pfad Sie erstellen, aber sieht aus wie etwas nicht brauchbar. –