मैं एक ऐसे फ़ंक्शन पर काम कर रहा हूं जो किसी तृतीय पक्ष API का उपयोग कर रिमोट सर्वर पर डेटा लिख देगा। स्टैक ओवरफ़्लो पर कुछ मदद के माध्यम से मैं इसे पूरा करने में सक्षम था, जहां यह अब अपेक्षित काम कर रहा है। समस्या यह है कि मुझे केवल 16kb खंड लिखने के लिए ही मिल सकता है क्योंकि मुझे pos
को अग्रिम बाइट्स के लिए लिखा जाना चाहिए।अपलोड लूप के दौरान बाइट स्थिति प्राप्त करें
प्रारंभिक लेखन आसानी से 0 से शुरू होता है। हालांकि, इसके साथ मेरी अपरिचितता के कारण, मुझे यकीन नहीं है कि अगले pos
केवल 16 या क्या होना चाहिए। यदि यह मदद करता है, तो एपीआई कॉल writeFileChunk()
3 पैरामीटर, फ़ाइलपैथ (स्ट्र), pos (int64), और डेटा (बेस 64 एन्कोडेड स्ट्रिंग) लेता है।
var chunk = new Uint8Array(buffer, count++ * chunkSize, segSize);
हालांकि, इस मामले में यह अग्रिम:
reader.onload = function(evt)
{
// Get SERVER_ID from URL
var server_id = getUrlParameter('id');
$("#upload_status").text('Uploading File...');
$("#upload_progress").progressbar('value', 0);
var chunkSize = 16<<10;
var buffer = evt.target.result;
var fileSize = buffer.byteLength;
var segments = Math.ceil(fileSize/chunkSize); // How many segments do we need to divide into for upload
var count = 0;
// start the file upload
(function upload()
{
var segSize = Math.min(chunkSize, fileSize - count * chunkSize);
if (segSize > 0)
{
$("#upload_progress").progressbar('value', (count/segments));
var chunk = new Uint8Array(buffer, count++ * chunkSize, segSize); // get a chunk
var chunkEncoded = btoa(String.fromCharCode.apply(null, chunk));
// Send Chunk data to server
$.ajax({
type: "POST",
url: "filemanagerHandler.php",
data: { 'action': 'writeFileChunk', 'server_id': server_id, 'filepath': filepath, 'pos': 0, 'chunk': chunkEncoded },
dataType: 'json',
success: function(data)
{
console.log(data);
setTimeout(upload, 100);
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert("Status: " + textStatus); alert("Error: " + errorThrown); alert("Message: " + XMLHttpRequest.responseText);
}
});
}
else
{
$("#upload_status").text('Finished!');
$("#upload_progress").progressbar('value', 100);
getDirectoryListing(curDirectory);
}
})()
};
क्या है कि 3 पार्टी एपीआई है, और प्रलेखन इस का उल्लेख नहीं है में इस उदाहरण देख सकते हैं? // यह मानने के लिए कि यह वास्तव में केवल बाइट स्थिति पर्याप्त अनुमान लग सकता है - तो जब आपने कोशिश की तो आपको क्या परिणाम मिले? – CBroe
यदि यह तृतीय पक्ष एपीआई केवल बेस 64 अपलोड की अनुमति देता है तो मैं इसका उपयोग नहीं करता ... – Endless