Jump to content

stas

uniGUI Subscriber
  • Posts

    489
  • Joined

  • Last visited

  • Days Won

    37

Posts posted by stas

  1. 1 hour ago, Tokay said:

    где что можно было перетащить? ничего не понятно. поэтому видимо и ответа не было.

    Да, можно, можно. в дизайнере, в редакторе полей, драг на форму.

    Только это новичкам нужно. Обычно не пользуются.

  2. Если Вы касательно Listview, то я ответил, вообще оно в дорожной карте.

    Сейчас его нет. Шерзод посчитал мой ответ удовлетворительным.

    Причем техподдержка, это для подписки.

    Не купившим помогают энтузиасты. Я вот например.

    • Like 1
  3. On 2/28/2020 at 6:12 AM, =GGG= said:

    я как понял форум нужен сейчас для того, чтоб узнавать кто какой сборкой пользуется?))

    Это действительно раздражает, помогать нужно без паспорта и свидетельства о прописке.

  4. Здравствуйте, вверну свои пять копеек.

    Отказывайтесь от ISAPI в принципе.

    Имхо, оптимальный вариант, это сервис с прокси через ARR, nginx, Apache (virtual proxy)

    В этом случае Вы легко можете деплоить свой  продукт и не заморачиваетесь на web server.

  5. Ну, полный код такой

    type TmyUnimFileEdit=class(TUnimFileEdit);
         TMyUnimcustomButtonItem=class(TUnimcustomButtonItem);
         TmyUniToolButton=class(TUnimToolButton);
    
    procedure TfmViewMPhoto.CreateFileInput;
    var FJSEdit:TUnimFileEdit;
    
    begin
     FJSEdit:=TUnimFileEdit.Create(Self);
     FJSEdit.Name := 'FileEdit_'+FJSEdit.JSName;
     FJSEdit.Visible:=false;
     FJSEdit.Parent:=Self;
     TmyUnimFileEdit(FJSEdit).JSHackObject(FJSEdit.JSControl);
     TmyUnimFileEdit(FJSEdit).FieldLabelWidth:=30;
     TmyUnimFileEdit(FJSEdit).FieldLabel:='';
     FJSEdit.Name := FJSEdit.JSName;
     TmyUnimFileEdit(FJSEdit).JSConfig('accept',['image/jpeg']);
     TmyUnimFileEdit(FJSEdit).JSCall('on',['change', TmyUnimFileEdit(FJSEdit).JSFunction('var input=document.getElementsByName("'+TmyUnimFileEdit(FJSEdit).JSName+'")[0];'+
    ' Ext.Viewport.mask({ xtype: "loadmask", message: "Завантаження..." });'#13#10+
    '    var filesToUpload = input.files;  '#13#10+
    '    var file = filesToUpload[0];                                 '#13#10+
    '    var img = document.createElement("img");                     '#13#10+
    '    var reader = new FileReader();                               '#13#10+
    '    reader.onload = function(e)                                  '#13#10+
    '    {                                                            '#13#10+
    '        img.src = e.target.result;                               '#13#10+
    '                                                                 '#13#10+
    '        var canvas = document.createElement("canvas");           '#13#10+
    '        var ctx = canvas.getContext("2d");                       '#13#10+
    '        ctx.drawImage(img, 0, 0);                                '#13#10+
    '                                                                 '#13#10+
    '        var MAX_WIDTH = 1024;                                    '#13#10+
    '        var MAX_HEIGHT = 768;                                    '#13#10+
    '        var width = img.width;                                   '#13#10+
    '        var height = img.height;                                 '#13#10+
    '                                                                 '#13#10+
    '        if (width > height) {                                    '#13#10+
    '          if (width > MAX_WIDTH) {                               '#13#10+
    '            height *= MAX_WIDTH / width;                         '#13#10+
    '            width = MAX_WIDTH;                                   '#13#10+
    '          }                                                      '#13#10+
    '        } else {                                                 '#13#10+
    '          if (height > MAX_HEIGHT) {                             '#13#10+
    '            width *= MAX_HEIGHT / height;                        '#13#10+
    '            height = MAX_HEIGHT;                                 '#13#10+
    '          }                                                      '#13#10+
    '        }                                                      '#13#10+
    '        canvas.width = width;                                    '#13#10+
    '        canvas.height = height;                                  '#13#10+
    '        var ctx = canvas.getContext("2d");                       '#13#10+
    '        ctx.drawImage(img, 0, 0, width, height);                 '#13#10+
    '                                                                 '#13#10+
    '        var dataurl = canvas.toDataURL("image/jpeg"); var avalue=input.value; input.value="";   '#13#10+
    '        ajaxRequest('+tlbBtn.JSName+',"export",["type=jpeg","uri="+dataurl,"filename="+avalue]);'#13#10+
    '    };                                                           '#13#10+
    '    reader.readAsDataURL(file);                                  '#13#10
          )]);
    UniSession.AddJS(tlbBtn.JSName+'.owner.fileInput='+FJSEdit.JSName+';');
    end;

    Я поднимал свн 2-х годичной давности, что-то мне там не понравилось, но файлы сжимались

    И еще

    procedure TfmViewMPhoto.tlbBtnAjaxEvent(Sender: TComponent; EventName: string;
      Params: TUniStrings);
      var MS:TMemoryStream;
      ss:String;
    begin
     if EventName='export' then
      begin
        MS:=TMemoryStream.Create;
       try
        ss:=copy(Params.Values['uri'],pos(',',Params.Values['uri'])+1,length(Params.Values['uri']));
        uIdCoderMIME.TIdDecoderMIME.DecodeStream(SS,MS);
        MS.Position:=0;
        imPhoto.LoadFromStream(MS);
         UniSession.AddJS('Ext.Viewport.unmask();');
        finally
        MS.Free;
       end;
    
      end;
    end;

     

  6. Есть.

    Кусок кода примерно такой

        var filesToUpload = input.files;  
        var file = filesToUpload[0];                                 
        var img = document.createElement("img");                     
        var reader = new FileReader();                               
        reader.onload = function(e)                                  
        {                                                            
            img.src = e.target.result;                               
                                                                     
            var canvas = document.createElement("canvas");           
            var ctx = canvas.getContext("2d");                       
            ctx.drawImage(img, 0, 0);                                
                                                                     
            var MAX_WIDTH = 1024;                                    
            var MAX_HEIGHT = 768;                                    
            var width = img.width;                                   
            var height = img.height;                                 
                                                                     
            if (width > height) {                                    
              if (width > MAX_WIDTH) {                               
                height *= MAX_WIDTH / width;                         
                width = MAX_WIDTH;                                   
              }                                                      
            } else {                                                 
              if (height > MAX_HEIGHT) {                             
                width *= MAX_HEIGHT / height;                        
                height = MAX_HEIGHT;                                 
              }                                                      
            }                                                      
            canvas.width = width;                                    
            canvas.height = height;                                  
            var ctx = canvas.getContext("2d");                       
            ctx.drawImage(img, 0, 0, width, height);                 
                                                                     
            var dataurl = canvas.toDataURL("image/jpeg"); var avalue=input.value; input.value="";   
            ajaxRequest(+tlbBtn.JSName+,"export",["type=jpeg","uri="+dataurl,"filename="+avalue]);
        };                                                           
        reader.readAsDataURL(file);                                 
          )]);

    От себя добавлю, я перестал видеть  смысл использовать Мобильную версию Унигуи (Фаршад ее похерил)

    Посмотрите в сторону нативных приложений

  7. Тогда, очень странно.

    Дело в том, что если Вы не создаете отдельный поток для генерации отчета, отсылка файла должна произойти после его сохранения.

    По другому быть не может.

  8. POST

    https://your.unigui-server.com/youproject/dofileupload?my_data=[some_data]&_S_ID=[your_session_id]

    On unigui server 

    procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject;
      var Handled: Boolean);
    var S:TUniGUISession;
    begin
    if (ASession is TUniGUISession) then
     begin
      S:=TUniGUISession(ASession);
    
      if (S.ARequest.Document='/dofileupload')  then
       begin
        //save file from poststream
        Handled:=false //???
       end   
    end;    

     

    • Upvote 1
  9. Я уже это рассказывал, это сложно, но становится больше возможностей.

    Цитирую

    Смотрите

    Ставите ARR v3+ Url rewrite

    UniGuiHyperService+UniGuiApplication stand alone

    В ARR разрешаете прокси

    Далее создаете обыкновенный сайт

    в IIS 

    Предположим у Вас  UniGuiHyperService вертится на порту 8077

    Допустим, вы хотите чтобы у вас сайт вертелся по имени mysite.com/myproject

    В Директории Сайта создаете папочку myproject

    Там создаете web.config следующего содержимого

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="redirect" stopProcessing="true">
                    <match url="(.*)" />
                        <action type="Rewrite" url="http://127.0.0.1:8077/{R:1}" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>
    Далее в UrlPath 

    UniServermodule Вашего проекта

    И в cfg UniGuiHyperService

    прописываете /myproject

    Вуаля, Ваш сайт работает

    • Upvote 2
  10. 2 hours ago, Alex_w said:

    То что надо! Спасибо!

    Отказывайтесь от этого, dll-ки не пропускают многие антивирусы, уходите от старой технологии.

    Работая с сервисом, Вы не зависите от веб-сервера, и вообще от того, что смотрит в мир.

    • Upvote 2
  11. Зайдите в любую папочку в консоле иис (функция Документ по умолчанию)

    После модификации посмотрите содержимое файла web.config в этой папочке

    • Like 1
    • Upvote 1
  12. Можете, страницы по умолчанию допишите туда Web.dll

    Это не пул, это папочка, 

    Можете смотреть в сторону ARR и URLrewrite

    Но тогда ISAPI выкиньте

    Только сервисы, только хардкор

    • Like 2
×
×
  • Create New...