সাফারি 5 / ফায়ারফক্স 4 দিয়ে শুরু করে, FormData
ক্লাসটি ব্যবহার করা সবচেয়ে সহজ :
var data = new FormData();
jQuery.each(jQuery('#file')[0].files, function(i, file) {
data.append('file-'+i, file);
});
সুতরাং এখন আপনার একটি FormData
অবজেক্ট রয়েছে, এক্সএমএলএইচটিপিআরকোয়েস্ট সহ প্রেরণে প্রস্তুত।
jQuery.ajax({
url: 'php/upload.php',
data: data,
cache: false,
contentType: false,
processData: false,
method: 'POST',
type: 'POST', // For jQuery < 1.9
success: function(data){
alert(data);
}
});
এটি জরুরী যে আপনি contentType
বিকল্পটি সেট করেছেন false
, jQuery আপনার জন্য একটি Content-Type
শিরোনাম যোগ না করার জন্য বাধ্য করুন , অন্যথায়, সীমানা স্ট্রিংটি এটি থেকে হারিয়ে যাবে। এছাড়াও, আপনাকে অবশ্যই processData
পতাকাটিকে মিথ্যা হিসাবে সেট করতে হবে, অন্যথায়, jQuery আপনাকে FormData
একটি স্ট্রিংয়ে রূপান্তরিত করার চেষ্টা করবে , যা ব্যর্থ হবে।
আপনি এখন পিএইচপি-তে ফাইলটি পুনরুদ্ধার করতে পারেন:
$_FILES['file-0']
(কেবলমাত্র একটি ফাইল রয়েছে, file-0
যদি না আপনি multiple
নিজের ফাইল ইনপুটটিতে অ্যাট্রিবিউটটি নির্দিষ্ট করেন, তবে এক্ষেত্রে প্রতিটি ফাইলের সাথে সংখ্যাগুলি বাড়বে))
ব্যবহার FormData এমুলেশন পুরোনো ব্রাউজারের জন্য
var opts = {
url: 'php/upload.php',
data: data,
cache: false,
contentType: false,
processData: false,
method: 'POST',
type: 'POST', // For jQuery < 1.9
success: function(data){
alert(data);
}
};
if(data.fake) {
// Make sure no text encoding stuff is done by xhr
opts.xhr = function() { var xhr = jQuery.ajaxSettings.xhr(); xhr.send = xhr.sendAsBinary; return xhr; }
opts.contentType = "multipart/form-data; boundary="+data.boundary;
opts.data = data.toString();
}
jQuery.ajax(opts);
একটি বিদ্যমান ফর্ম থেকে ফর্মডেটা তৈরি করুন
ম্যানুয়ালি ফাইলগুলি পুনরাবৃত্তি করার পরিবর্তে ফর্মডাটা অবজেক্টটি বিদ্যমান ফর্ম অবজেক্টের সামগ্রী সহ তৈরি করা যেতে পারে:
var data = new FormData(jQuery('form')[0]);
কাউন্টারের পরিবর্তে পিএইচপি নেটিভ অ্যারে ব্যবহার করুন
কেবল আপনার ফাইল উপাদানগুলির নাম দিন এবং বন্ধনীতে নামটি শেষ করুন:
jQuery.each(jQuery('#file')[0].files, function(i, file) {
data.append('file[]', file);
});
$_FILES['file']
তারপরে আপলোড হওয়া প্রতিটি ফাইলের জন্য ফাইল আপলোড ক্ষেত্র সমন্বিত একটি অ্যারে হবে। আমি এটির পুনরুক্তি করা সহজতর হিসাবে এটি আমার প্রাথমিক সমাধানের উপরে এটির প্রস্তাব দিই।