Hi,

Please find attached patch to handle upload of large files and also to show
upload error if
error occurs instead of showing undefined.

-- 
*Harshal Dhumal*
*Sr. Software Engineer*

EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
diff --git a/web/pgadmin/misc/file_manager/__init__.py b/web/pgadmin/misc/file_manager/__init__.py
index 0e39fa9..2239cae 100644
--- a/web/pgadmin/misc/file_manager/__init__.py
+++ b/web/pgadmin/misc/file_manager/__init__.py
@@ -886,10 +886,14 @@ class Filemanager(object):
             newName = u"{0}{1}".format(orig_path, file_name)
 
             with open(newName, 'wb') as f:
-                f.write(file_obj.read())
+                while True:
+                    data = file_obj.read(4194304)  # 4MB chunk (4 * 1024 * 1024 Bytes)
+                    if not data:
+                        break
+                    f.write(data)
         except Exception as e:
             code = 0
-            err_msg = u"Error: {0}".format(e.strerror)
+            err_msg = u"Error: {0}".format(e.strerror if hasattr(e, 'strerror') else u'Unknown')
 
         try:
             Filemanager.check_access_permission(dir, path)
diff --git a/web/pgadmin/misc/file_manager/templates/file_manager/js/utility.js b/web/pgadmin/misc/file_manager/templates/file_manager/js/utility.js
index d0eaf7a..5de8c1c 100755
--- a/web/pgadmin/misc/file_manager/templates/file_manager/js/utility.js
+++ b/web/pgadmin/misc/file_manager/templates/file_manager/js/utility.js
@@ -1624,7 +1624,7 @@ if (has_capability(data, 'upload')) {
       complete: function(file) {
         if (file.status == "error") {
           var alertifyWrapper = new AlertifyWrapper();
-          alertifyWrapper.error(lg.ERROR_UPLOADING_FILE);
+          alertifyWrapper.error(lg.upload_error);
         }
         $('.upload_file .dz_cross_btn').removeAttr('disabled');
         getFolderInfo(path);
diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py
index d34836c..d51e241 100644
--- a/web/pgadmin/tools/sqleditor/__init__.py
+++ b/web/pgadmin/tools/sqleditor/__init__.py
@@ -1490,14 +1490,15 @@ def load_file():
             errormsg=gettext("File type not supported")
         )
 
-    with codecs.open(file_path, 'r', encoding=enc) as fileObj:
-        data = fileObj.read()
-
-    return make_json_response(
-        data={
-            'status': True, 'result': data,
-        }
-    )
+    def gen():
+        with codecs.open(file_path, 'r', encoding=enc) as fileObj:
+            while True:
+                data = fileObj.read(4194304)  # 4MB chunk (4 * 1024 * 1024 Bytes)
+                if not data:
+                    break
+                yield data
+
+    return Response(gen(), mimetype='text/plain')
 
 
 @blueprint.route('/save_file/', methods=["PUT", "POST"], endpoint='save_file')
diff --git a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
index 8a797ab..72904a9 100644
--- a/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/templates/sqleditor/js/sqleditor.js
@@ -2542,11 +2542,9 @@ define([
             contentType: "application/json",
             data: JSON.stringify(data),
             success: function(res) {
-              if (res.data.status) {
-                self.gridView.query_tool_obj.setValue(res.data.result);
-                self.gridView.current_file = e;
-                self.setTitle(self.gridView.current_file.split('\\').pop().split('/').pop());
-              }
+              self.gridView.query_tool_obj.setValue(res);
+              self.gridView.current_file = e;
+              self.setTitle(self.gridView.current_file.split('\\').pop().split('/').pop());
               self.trigger('pgadmin-sqleditor:loading-icon:hide');
               // hide cursor
               $busy_icon_div.removeClass('show_progress');

Reply via email to