我是webdevelopment的新手,特别是在javascript中。我的目标是在我正在进行的项目中使用DHTMLX库。
我将文件上传到django服务器时遇到问题。现在我正在使用DHTMLX javascript库,我的网站上有一个带有按钮的DHTMLXToolBar。我想通过单击此按钮上传文件。但是我的代码没有向我显示选择文件/文件的任何窗口(很多,最好)。没有关于此的任何HTML代码。
我尝试过使用隐藏的表单,甚至隐藏的iframe表单,裸javasctip,但仍然没有。
我的js代码
var iframe = document.createElement("iframe");
filesToolbarObject.attachEvent("onClick", function(id) {
if (id == "new"){
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "");
form.setAttribute("id", "playlist_form");
form.setAttribute("enctype", "multipart/form-data");
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "filesToUpload[]");
hiddenField.setAttribute("id", "filesToUpload");
hiddenField.setAttribute("type", "file[]");
hiddenField.setAttribute("multiple", "");
hiddenField.setAttribute("onChange", "makeFileList();");
var crfcTokenField = document.createElement("input");
crfcTokenField.setAttribute("type", "hidden");
crfcTokenField.setAttribute("name", "csrfmiddlewaretoken");
crfcTokenField.setAttribute("value", '{{ csrf_token }}');
form.appendChild(hiddenField);
form.appendChild(crfcTokenField);
iframe.name = "myTarget";
// Next, attach the iFrame to the main document
window.addEventListener("load", function () {
iframe.style.display = "none";
document.body.appendChild(iframe);
});
iframe.addEventListener("load", function () {
$('.upload').show();
});
form.target = iframe.name;
form.style.display = "none";
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
});
服务器端:
for fileToUpload in request.FILES.getlist('filesToUpload[]'):
fileType=get_file_type(fileToUpload.name.split('.')[-1])
if fileType:
newFile = Media()
newFile.type = fileType
newFile.ext = newFile.name.split('.')[-1]
newFile.size=fileToUpload.size
newFile.file=fileToUpload
newFile.name=fileToUpload.name
newFile.save()