Я хочу, чтобы файлы загружались в папку Google Диска со страницы publi c. На данный момент я могу загрузить только один файл. Во входном файле я помещаю атрибут multiple, но из выбранных файлов загружаю только один. Я использую скрипт Google Apps.
- Файл server.gs -
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('forms.html').setTitle("Subir Archivos");
}
function uploadFileToGoogleDrive(data, file, name) {
try {
var dropbox = "Carpeta de archivos"
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
var contentType = data.substring(5,data.indexOf(';')),
bytes = Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)),
blob = Utilities.newBlob(bytes, contentType, file),
file = folder.createFile(blob);
return "OK";
} catch (f) {
return f.toString();
}
}
- Файл «формы. html» -
<!DOCTYPE html>
<html>
<head>
<base target="_blank">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Subir Archivos</title>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/css/materialize.min.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
</head>
<body>
<form class="main" id="form" novalidate="novalidate" style="max-width: 450px;margin: 5px auto;">
<div id="forminner">
<div class="input-field col s12">
<b><font face="arial" size="3"><span for="disabled" style="color: #384047;">Sube tus archivos:</span></font></b>
</div>
<div class="file-field input-field col s12">
<div class="btn">
<span>Archivo</span>
<input id="files" type="file" multiple>
</div>
<div class="file-path-wrapper">
<input class="file-path validate" type="text" placeholder="Seleccione uno o más archivos de su equipo">
</div>
</div>
<div class="input-field col s6">
<button class="waves-effect waves-light btn submit-btn" type="submit" onclick="submitForm(); return false;">Enviar</button>
</div>
<div class="row">
<div class="input-field col s12" id = "progress">
</div>
</div>
</div>
<div id="success" style="display:none">
<h5 class="left-align teal-text">Archivo subido</h5>
<p>Tu archivo se ha cargado correctamente.</p>
</div>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/js/materialize.min.js"></script>
<script src="https://gumroad.com/js/gumroad.js"></script>
<script>
var file,
reader = new FileReader();
reader.onloadend = function(e) {
if (e.target.error != null) {
showError("File " + file.name + "No se pudo leer.");
return;
} else {
google.script.run
.withSuccessHandler(showSuccess)
.uploadFileToGoogleDrive(e.target.result, file.name);
}
};
function showSuccess(e) {
if (e === "OK") {
$('#forminner').hide();
$('#success').show();
} else {
showError(e);
}
}
function submitForm() {
var files = $('#files')[0].files;
if (files.length === 0) {
showError("Porfavor seleccione un archivo para subir");
return;
}
file = files[0];
if (file.size > 1024 * 1024 * 100) {
showError("El tamaño del archivo debe ser <100 MB");
return;
}
showMessage("Subiendo archivo, espere...");
reader.readAsDataURL(file);
}
function showError(e) {
$('#progress').addClass('red-text').html(e);
}
function showMessage(e) {
$('#progress').removeClass('red-text').html(e);
$('#progress').html('<div class="loading"><img src="https://script.google.com/d/1FpyzPrVfl2fL2X-6puxANAmM9Jakh23FV1Ym6zmvo1Rk0SjO-157JmFT/gwt/images/spin-wait.gif" alt="loading" /> Subiendo archivo, espere...</div>');
}
</script>
</body>
</html>
Я нашел код в Интернете и немного адаптировал его для работы на испанском языке sh.