PHP 를 이용한 파일 업로드는 서버에 저장된 파일을 스크립트를 이용해 리스트와 파일로 저장하는 방식이었다.
이제는 apps script를 이용해 직접 구글 드라이브로 업로드하여 중간 절차와 서버 사용 부담을 줄였다.
[원본글]
https://ctrlq.org/code/19747-google-forms-upload-files
[file.gs]
/* The script is deployed as a web app and renders the form */
function doGet(e) {
return HtmlService
.createHtmlOutputFromFile('form.html')
.setTitle("파일 업로드");
}
function uploadFileToGoogleDrive(data, file, name, kind, row) {
try {
var tD = Utilities.formatDate(new Date(), "GMT+9", "yyyyMMdd");
var folder, folders = DriveApp.getFoldersByName(tD);
var imageFolder = DriveApp.getFolderById("폴더");
/* Find the folder, create if the folder does not exist */
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = imageFolder.createFolder(tD);
}
var contentType = data.substring(5,data.indexOf(';')),
bytes = Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)),
blob = Utilities.newBlob(bytes, contentType, file);
var file = folder.createFolder(tD).createFile(blob);
return "OK";
} catch (f) {
return f.toString();
}
}
[form.html]
<!-- File upload button -->
<input id="file" type="file">
<!-- Form submit button -->
<button id="sb" onclick="submitForm();return false;">전송</button>
<!-- Show Progress -->
<div id="progress"></div>
<!-- Add the jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var file,
reader = new FileReader();
// Upload the file to Google Drive
reader.onloadend = function(e) {
google.script.run
.withSuccessHandler(showMessage)
.uploadFileToGoogleDrive(
e.target.result, file.name,
$('select#company option:selected').text(),
$('select#kind').val(),
$('select#company').val()
);
};
// Read the file on form submit
function submitForm() {
file = $('#file')[0].files[0];
if(!file){
alert('파일선택');
}else{
file = $('#file')[0].files[0];
showMessage("Uploading file..");
reader.readAsDataURL(file);
}
}
function showMessage(e) {
$('#progress').html(e);
$('#sb').prop("disabled",true);
}
</script>
댓글 달기