এই প্রশ্নের উত্তর দেওয়ার জন্য আমি স্ট্যাকওভারফ্লোতে কয়েকটি আলাদা পোস্ট এবং এমনকী প্রশ্ন পেয়েছি। আমি মূলত এই পোস্ট হিসাবে একই জিনিস বাস্তবায়ন করছি ।
সুতরাং এখানে আমার সমস্যা। আমি যখন ছবিটি আপলোড করি তখন আমারও বাকি ফর্মটি জমা দিতে হবে। এখানে আমার এইচটিএমএল:
<form id="uploadImageForm" enctype="multipart/form-data">
<input name="imagefile[]" type="file" id="takePictureField" accept="image/*" onchange="uploadPhotos(\'#{imageUploadUrl}\')" />
<input id="name" value="#{name}" />
... a few more inputs ...
</form>
পূর্বে, আমার ইমেজটিকে পুনরায় আকার দেওয়ার দরকার ছিল না, তাই আমার জাভাস্ক্রিপ্টটি দেখতে এ জাতীয় দেখাচ্ছে:
window.uploadPhotos = function(url){
var data = new FormData($("form[id*='uploadImageForm']")[0]);
$.ajax({
url: url,
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
... handle error...
}
}
});
};
এটি সবই দুর্দান্ত কাজ করেছে ... এখন যেহেতু আমাকে চিত্রগুলি পুনরায় আকার দেওয়া দরকার ... আমি কীভাবে ফর্মটিতে চিত্রটি প্রতিস্থাপন করতে পারি যাতে পুনরায় আকারিত ছবিটি পোস্ট করা হয় এবং আপলোড করা চিত্রটি নয়?
window.uploadPhotos = function(url){
var resizedImage;
// Read in file
var file = event.target.files[0];
// Ensure it's an image
if(file.type.match(/image.*/)) {
console.log('An image has been loaded');
// Load the image
var reader = new FileReader();
reader.onload = function (readerEvent) {
var image = new Image();
image.onload = function (imageEvent) {
// Resize the image
var canvas = document.createElement('canvas'),
max_size = 1200,
width = image.width,
height = image.height;
if (width > height) {
if (width > max_size) {
height *= max_size / width;
width = max_size;
}
} else {
if (height > max_size) {
width *= max_size / height;
height = max_size;
}
}
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(image, 0, 0, width, height);
resizedImage = canvas.toDataURL('image/jpeg');
}
image.src = readerEvent.target.result;
}
reader.readAsDataURL(file);
}
// TODO: Need some logic here to switch out which photo is being posted...
var data = new FormData($("form[id*='uploadImageForm']")[0]);
$.ajax({
url: url,
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
... handle error...
}
}
});
};
আমি ফর্মটি ফাইলের ইনপুটটি সরিয়ে নিয়ে যাওয়া এবং ফর্মের মধ্যে একটি লুকানো ইনপুট থাকার বিষয়ে ভেবেছি যা আমি পুনরায় আকারিত চিত্রটির মানকে সেট করে দিয়েছি ... তবে আমি ভাবছি যে আমি কেবল সেই চিত্রটি প্রতিস্থাপন করতে পারি কিনা? ইতিমধ্যে ফর্ম আছে।