Python Django AngularJs dropzone 多個上傳檔案 爬坑
最近 使用了 dropzone 的 多個 檔案 上傳的功能 ,參考網站上的說明並沒有很快實現,並且網站的後臺是 使用 Java 寫的,我需要使用的python ,所以總結教程中的幾個 問題:
3.出現的問題 :
3.1 報錯資訊 :$scope.processQueue is not a function
解決方式:$scope.processQueue();
函式 寫錯了,應該是processDropzone
可以在後面對應的函式發現 processDropzone
是 呼叫了 processQueue()
函式 所以肯定是名稱寫錯了
/* js/fileAppControllers.js */
...
fileAppControllers.controller('FileCtrl', ['scope',
function ($scope) {
$scope.partialDownloadLink = 'http://localhost:8080/download?filename=';
$scope.filename = '';
$scope.uploadFile = function() {
$scope.processQueue();
};
$scope.reset = function() {
$scope.resetDropzone();
};
}
]);
3.2 報錯情況:demo中是可以實現多個檔案上傳的,但是把網站上js
複製下來,發現最後只能是上傳最後一個
原因是 : js
files[1]!=null
就會刪除之前所有的檔案,只剩下最後一個! 解決方式:刪除
If
語句既可以
var eventHandlers = { 'addedfile': function(file) {
scope.file = file;
if (this.files[1]!=null) { this.removeFile(this.files[0]);
}
scope.$apply(function() {
scope.fileAdded = true;
);
},
'success': function (file, response) { }
};
3.4 js 中 dropzone 報錯資訊 :dropzone is undefined
原因是 在 js 中 定義一個 新的變數 dropzone 前面需要加上 var
解決方式 :var dropzone = new Dropzone(element[0], config);
ps :這個問題 我查出來花了三個小時,新手爬坑真的是好慘
3.5 報錯情況:ontroller 'carousel', required by directive 'ngTransclude', can't be found
原因是 : 未知 還需要回來補充這一段
3.6 後臺python實現:
報錯情況:the server responded with a status of 405 (Method Not Allowed)
表示使用的方法是不正確的,DropZone 預設使用的post的方式傳資料
解決方式是後臺使用post接收,我用的是Viewset中的 APIView
,本來我用的是 get方法,後來改成了 post
,因為是 多個檔案上傳所以request.FILES.iteritems():
型別是 dict
,需要使用 迴圈得到每一個 檔案,程式碼如下
class PropertyUploadFileInteractiveView(APIView):
def post(self, request, *args, **kw):
property_id = request.GET['property_id']
for key, value in request.FILES.iteritems():
返回的是response
op_result = 'success'
result ={'result':op_result}
response = Response(result, status=status.HTTP_200_OK)
#return response
#return HttpResponseRedirect("/ui-property/property_detail/%s" % property_id)
else:
op_result = 'fail'
result ={'result':op_result}
response = Response(result, status=status.HTTP_200_OK)
。。。。。