সম্পাদনা (অক্টোবর 2019):
6 বছর পরে এবং jQuery ফাইল আপলোড স্পষ্টভাবে এখনও লোকেদের উন্মাদনা চালাচ্ছে। যদি আপনি এখানে উত্তরগুলিতে সামান্য স্বচ্ছন্দতা খুঁজে পান তবে একটি আধুনিক বিকল্পের জন্য এনপিএম অনুসন্ধানের চেষ্টা করুন । আমি ঝামেলা করার মতো নয়, আমি প্রতিশ্রুতি দিচ্ছি।আমি পূর্ববর্তী সম্পাদনায় আপলোডের প্রস্তাব দিয়েছিলাম তবে একজন মন্তব্যকারী হিসাবে উল্লেখ করেছে যে তারা আর কোনও ফ্রি সংস্করণ সরবরাহ করবে না। Uploadify ছিল তাই 2013 যাহাই হউক না কেন।
সম্পাদনা করুন:
এটি এখনও ট্র্যাফিক পাচ্ছে বলে মনে হচ্ছে তাই আমি কী করব তা ব্যাখ্যা করব। আমি শেষ পর্যন্ত গৃহীত উত্তরের টিউটোরিয়াল অনুসরণ করে প্লাগইনটি কাজ করতে পেয়েছি। তবে, jQuery ফাইল আপলোড একটি বাস্তব ঝামেলা এবং যদি আপনি একটি সহজ ফাইল আপলোড প্লাগইন খুঁজছেন, আমি অত্যন্ত আপলোডের সুপারিশ করব । উত্তর হিসাবে ইঙ্গিত করা হয়েছে, এটি কেবল বাণিজ্যিক-বাণিজ্যিক ব্যবহারের জন্য বিনামূল্যে।পটভূমি
ব্যবহারকারীদের ফাইল আপলোড করার অনুমতি দেওয়ার জন্য আমি নীলিম্পের jQuery ফাইল আপলোড ব্যবহার করার চেষ্টা করছি । বাক্সের বাইরে সেটআপ নির্দেশাবলী অনুসরণ করে এটি পুরোপুরি কাজ করে । তবে এটি আমার ওয়েবসাইটে ব্যবহারিকভাবে ব্যবহার করতে, আমি কয়েকটি জিনিস করতে সক্ষম হতে চাই:
- আমার বিদ্যমান পৃষ্ঠাগুলির যে কোনওটিতে আপলোডার অন্তর্ভুক্ত করুন
- আপলোড করা ফাইলগুলির জন্য ডিরেক্টরি পরিবর্তন করুন
প্লাগইনটির জন্য সমস্ত ফাইলগুলি মূলের নীচে একটি ফোল্ডারে অবস্থিত।
আমি চেষ্টা করেছিলাম...
- ডেমো পৃষ্ঠাটি রুটে সরানো এবং প্রয়োজনীয় স্ক্রিপ্টগুলির জন্য পাথ আপডেট করা
- এখানে প্রস্তাবিত হিসাবে আপলোডহ্যান্ডলিআরপিএফ ফাইলটিতে 'আপলোড_ডির' এবং 'আপলোড_আরল' বিকল্পগুলি পরিবর্তন করা হচ্ছে ।
- ডেমো জাভাস্ক্রিপ্টের দ্বিতীয় লাইনে ইউআরএল পরিবর্তন করা
সব ক্ষেত্রে, প্রিভিউ শো, এবং প্রগতি দণ্ড রান, কিন্তু ফাইল আপলোড করতে ব্যর্থ, আর আমি কনসোলে এই ত্রুটি পাবেন: Uncaught TypeError: Cannot read property 'files' of undefined
। প্লাগিনের সমস্ত অংশগুলি কীভাবে কাজ করে যা ডিবাগ করা কঠিন করে তুলছে তা আমি বুঝতে পারি না।
কোড
ডেমো পৃষ্ঠায় জাভাস্ক্রিপ্ট:
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = 'file_upload/server/php/UploadHandler.php',
uploadButton = $('<button/>')
.addClass('btn')
.prop('disabled', true)
.text('Processing...')
.on('click', function () {
var $this = $(this),
data = $this.data();
$this
.off('click')
.text('Abort')
.on('click', function () {
$this.remove();
data.abort();
});
data.submit().always(function () {
$this.remove();
});
});
$('#fileupload').fileupload({
url: url,
dataType: 'json',
autoUpload: false,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxFileSize: 5000000, // 5 MB
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
data.context = $('<div/>').appendTo('#files');
$.each(data.files, function (index, file) {
var node = $('<p/>')
.append($('<span/>').text(file.name));
if (!index) {
node
.append('<br>')
.append(uploadButton.clone(true).data(data));
}
node.appendTo(data.context);
});
}).on('fileuploadprocessalways', function (e, data) {
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.preview) {
node
.prepend('<br>')
.prepend(file.preview);
}
if (file.error) {
node
.append('<br>')
.append(file.error);
}
if (index + 1 === data.files.length) {
data.context.find('button')
.text('Upload')
.prop('disabled', !!data.files.error);
}
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}).on('fileuploaddone', function (e, data) {
$.each(data.result.files, function (index, file) {
var link = $('<a>')
.attr('target', '_blank')
.prop('href', file.url);
$(data.context.children()[index])
.wrap(link);
});
}).on('fileuploadfail', function (e, data) {
$.each(data.result.files, function (index, file) {
var error = $('<span/>').text(file.error);
$(data.context.children()[index])
.append('<br>')
.append(error);
});
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
দলিলের অভাবে আমি অবাক; দেখে মনে হচ্ছে এটি পরিবর্তন করা সহজ জিনিস হওয়া উচিত। কেউ যদি এটি কীভাবে ব্যাখ্যা করতে পারে তবে আমি প্রশংসা করব।