Büyük dosya yüklemelerine izin vermek için, yükleme komut dosyamı DriveApps - Drive API kullanarak dönüştürmek üzere bu iletideki (How to Use Advanced Drive Service to Upload Files) yanıtı takip etmeye çalışıyordum. 50 GB civarında dosya yüklemek için) ama çok fazla başarı elde edemedim.Büyük dosyaları yüklemek için Google Drive API'sını kullanma
Göreceli olarak küçük dosyalar yüklediğimde her şey iyi çalışıyor (20 MB civarında dosyalar ile denedim), ancak daha büyük bir dosyayı (yaklaşık 400 MB) yüklemeyi denediğimde hiçbir şey olmuyor.
Ben aşağıdaki hataları alıyorum:
POST 2601514732-mae_html_user_bin_i18n_mae_html_user.js:71 POST …3A1462412854269&fsid=4787eea0-1d3c-4fd8-b263-8bae40da182d&func=uploadFiles 413()
375182757-mae_html_driver_bin_i18n_mae_html_driver.js:113 GET …b263-8bae40da182d&token=AJuLMu2o9KnAOrSvzonQHNRGUelVpsakEg%3A1462412854269 500()
2601514732-mae_html_user_bin_i18n_mae_html_user.js:46 Uncaught NetworkError: Connection failure due to HTTP 500
ben Sürücü API bana herhangi bir boyut dosya yüklemesine izin sanıyordum? Neyi yanlış yapıyorum? Kontrol ettim ve Drive API'sını etkinleştirdim. Herhangi bir yardım büyük beğeni topluyor.
Benim server.gs komut:
function doGet(e) {
return template = HtmlService.createHtmlOutputFromFile('form.html');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function uploadFiles(form) {
try {
var dropbox = "File Transfer";
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
//Upload file and set various properties
var mediaData = form.File1;
var timeStamp = new Date();
var resource = {
description: "File uploaded on: " + timeStamp
};
var file = Drive.Files.insert(resource, mediaData); // create file using Drive API
var fileId = file.id;
var DriveAppFile = DriveApp.getFileById(fileId); // retrieve file in DriveApp scope.
DriveApp.removeFile(DriveAppFile); // remove new file from Users root My Drive
folder.addFile(DriveAppFile); // puts file in selected folder
return "Thank you for your submission."
} catch (error) {
return error.toString();
}
}
Benim form.html:
<!DOCTYPE html>
<!-- You can also include your own CSS styles -->
<link href='https://fonts.googleapis.com/css?family=Bitter' rel='stylesheet' type='text/css'>
<div class="form-style-10">
<title>File Transfer </title>
<form id="myForm" name="myForm">
<h1> File Transfer </h1>
<p></p>
<fieldset class="fields">
<div class="section"> Files </div>
<div class="inner-wrap">
<label for="File1"> File 1 </label>
<input type="file" name="File1" required />
</div>
</fieldset>
<p> </p>
<p id="incompleteWarning" class="hideClass"> Please select a file to transfer. </p>
<p id="bePatient" class="hideClass"> Please be patient while the file is being uploaded. Do not close or refresh the form. You will see a "transfer complete" message when the upload is finished.</p>
<input id="submitbutton" type="button" value="Submit Application" />
</form>
<div id="output" class="hideClass">
<h1 id="TitleForm"> File Transfer </h1>
<span id="ThankYou" >Transfer complete! If you need to transfer another file, you can use the same link again.
</span>
</div>
</div>
<script type="text/javascript">
document.getElementById('submitbutton').addEventListener("click", validatefunction);
function validatefunction() {
document.getElementById('submitbutton').val = 'Submitting...';
//check for required fields
var j = 0;
var form = document.getElementById('myForm');
var elem = form.elements;
for (var i = 0; i < elem.length; i++){
elem[i].className = "";
if (elem[i].value === "" && elem[i].hasAttribute('required')){
elem[i].className = "warning";
j++;
}
}
if (j === 0) {
var btn = document.getElementById('submitbutton');
btn.disabled = true;
document.getElementById('incompleteWarning').style.display = 'none';
document.getElementById('bePatient').style.display = 'inline';
google.script.run.withSuccessHandler(fileUploaded).uploadFiles(this.parentNode);
} else{
document.getElementById('submitbutton').val = 'Submit Application';
document.getElementById('incompleteWarning').style.display = 'inline';
document.getElementById('incompleteWarning').style.color = 'red';
}
};
</script>
<script>
function fileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').style.display = 'inline';
}
</script>
<style>
input { display:block; margin: 20px; }
</style>
@noogui Basit yükleme türünü kullanıyorum. Bunu senaryoda nasıl değiştireceğimi bilmiyorum. – LJB
Bu [repo] 'yu (https://github.com/googledrive/cors-upload-sample) kontrol edin, size bir fikir verebilir. – noogui
Tamamen emin değilim, ancak Drive REST API'sini değil, Advance Drive Service'i kullandığınızdan 'uploadType' geçersizdir. –