У меня есть веб-страница, которую пользователи должны использовать для загрузки содержимого CSV в базу данных MySQL. Как мне получить содержимое с помощью внешнего метода и вставить его в базу данных?
Сначала у меня есть форма, которую пользователи используют для загрузки файлов:
<form role="form" action="scripts/processUpload" method="post" enctype="multipart/form-data">
<div class="form-group">
<input type="file" class="form-control" name="file_name" id="file_name" accept=".csv,.txt">
<input type="hidden" name="type_of_upload" value="cell_line">
</div>
<button type="submit" class="btn btn-primary" style="align-content:center" id="i_submit">Upload</button>
<script>
$('#i_submit').click(function () {
//check whether browser fully supports all File API
if (window.File && window.FileReader && window.FileList && window.Blob) {
//get the file size and file type from file input field
var fsize = $('#file_name')[0].files[0].size;
var ftype = $('#file_name')[0].files[0].type;
var fname = $('#file_name')[0].files[0].name;
if (fsize > 5242880) //do something if file size more than 5 mb (1048576)
{
alert("Type :" + ftype + " | " + fsize + " bites\n(File: " + fname + ") Too big!");
}
} else {
alert("Please upgrade your browser, because your current browser lacks some new features we need!");
}
});
$('#i_submit').click(function () {
//check whether browser fully supports all File API
if (window.File && window.FileReader && window.FileList && window.Blob) {
//get the file size and file type from file input field
var fsize = $('#file_name')[0].files[0].size;
var ftype = $('#file_name')[0].files[0].type;
var fname = $('#file_name')[0].files[0].name;
//alert(ftype)
switch (ftype) {
case 'application/vnd.ms-excel':
case 'text/plain':
//alert("Acceptable image file!");
break;
default:
alert('Unsupported File format!');
}
} else {
alert("Please upgrade your browser, because your current browser lacks some new features we need!");
}
});
</script>
</form>
Часть скрипта procesUpload показана ниже, я использую запрос для получения файла:
data=context.fileReader(data_file=context.REQUEST.file_name.name)
print data
return printed
FileReader — это внешний метод, который принимает файл данных и должен читать его содержимое:
def readFiles(data_file):
with open(data_file,'r') as f:
data=f.readlines()
for line in data:
words = line.split(",")
data_read.append(words)
return data_read
Но после всего этого я получаю:
Error Type: IOError
Error Value: (13, 'Permission denied'),
Может ли кто-нибудь с опытом загрузки и чтения содержимого загруженного файла в Zope помочь?