Je télécharge une image à partir du bureau et convertis cette image en code de base en javascript. Après cela, je veux envoyer ce code de base d'image au contrôleur de printemps avec la demande multipart. Mais je n'utilise pas de formulaire.Envoie une requête multipart depuis ajax au contrôleur de ressort sans form?
HTML
<input id="inputFileToLoad" type="file" onchange="encodeImageFileAsURL()">
JAVA SCRIPT
window.photoCakeUrl = '<c:url value="/media/image/upload"/>';
function encodeImageFileAsURL() {
var filesSelected = document.getElementById("inputFileToLoad").files;
if (filesSelected.length > 0) {
var fileToLoad = filesSelected[0];
var fileReader = new FileReader();
fileReader.onload = function (fileLoadedEvent) {
var srcData = fileLoadedEvent.target.result; // <--- data: base64
var newImage = document.createElement('img');
var photoCake = srcData;
newImage.src = srcData;
document.getElementById("imgTest").innerHTML = newImage.outerHTML;
var ajax1 = $.ajax({
type: 'POST',
url: photoCakeUrl,
processData: false, // important
contentType: false, // important
dataType: 'json',
data: {photoCak: photoCake}
});
});
},
fileReader.readAsDataURL(fileToLoad);
}
}
PRINTEMPS CONTRÔLEUR:
@RequestMapping(value = "/media/image/upload", method = RequestMethod.POST)
@ResponseBody
public Map<String, String> productPictureUploadnew(MultipartHttpServletRequest request, HttpServletResponse response) {
Map<String, String> resp = new HashMap<>();
String photoCake = request.getParameter("photoCak");
System.out.println("photoCake " + photoCake);
return resp;
}
Mais quand je suis genres ting appel AJAX puis erreur 500 viendra. Si j'utilise simplement
public Map<String, String> productPictureUploadnew(HttpServletRequest
request, HttpServletResponse response)
Ensuite, cela fonctionne. Moyenne lorsque j'utilise MultipartHttpServletRequest place de HttpServletRequest demande alors il ne fonctionne pas.
Vous n'êtes pas envoyer une demande multipart, vous envoyons les données de fichier encodées en base64 dans un objet JSON. – Quagaar
Oui, mais je veux envoyer ces données avec la demande multipart .. –
Ensuite, il suffit de soumettre le formulaire qui contient votre 'inputFileToLoad'. Oh, et bien sûr, définissez 'enctype =" multipart/form-data "' sur le formulaire. – Quagaar