2015-05-08 3 views
-1

У меня есть форма, которую я запрограммировал с помощью Angularjs и PHP (Slim Framework). В форме пользователь должен иметь возможность загрузить файл (pdf), который будет отправлен в виде вложения автоматически сгенерированного сообщения электронной почты (которое отправляется с phpmailer) после отправки формы.Загрузка файла для вложения электронной почты с помощью Angularjs

Я принял исследование для решения моей проблемы, но я не нашел ничего, что сработало бы для меня.

У кого-нибудь есть идея, как это решить?

+0

https://github.com/nervgh/angular-file- upload/ – JabberwockyDecompiler

+0

Я пробовал это, но это не сработало. Можете ли вы показать мне пример? – Yunnigg

ответ

0

Сначала вам необходимо настроить свой HTML-код. Вы также можете найти пример here.

<div popover="Open a previously saved project." popover-trigger="mouseenter" class="form-button" ng-file-select ng-model="file">Open Existing Project</div> 

Примечание У меня есть поповер здесь, есть ошибка при загрузке, то поповер не уходит, я хотел бы предложить либо не использовать его или отправляя решение здесь, пожалуйста;)

Затем используйте часы для переменной, установленной для загрузки файла.

//Watch file for changes to run open file dialog 
$scope.$watch('file', function() { 
    //Only make the ajax call if there is a file to upload 
    if ($scope.file) { 
     ajaxFactory.openFileDialog($scope.file, setProjectData); 
    } 
}); 

В моем случае у меня есть АЯКС оболочка, которая вызывает контроллер MVC

/// <summary> 
    /// Save a file to the server 
    /// </summary> 
    /// <returns></returns> 
    [HttpPost] 
    public JsonResult Upload(HttpPostedFileBase file) 
    { 
     var retObject = new JsonReturnObject(); 

     try 
     { 
      // Read bytes from http input stream 
      BinaryReader b = new BinaryReader(file.InputStream); 
      var binData = b.ReadBytes((int)file.InputStream.Length); 

      retObject.StringPayload = NttCommon.GetString(binData); 
      retObject.Success = true; 

      b.Close(); 
      b.Dispose(); 
     } 
     catch (ArgumentNullException ane) 
     { 
      Log.Error("An ArgumentNullException occured while uploading to FileManagerController.", ane); 
      retObject.StringPayload = ane.InnerException.ToString(); 
     } 
     catch (ArgumentOutOfRangeException aoore) 
     { 
      Log.Error("An ArgumentOutOfRangeException occured while uploading to FileManagerController.", aoore); 
      retObject.StringPayload = aoore.InnerException.ToString(); 
     } 
     catch (DecoderFallbackException dfe) 
     { 
      Log.Error("An DecoderFallbackException occured while uploading to FileManagerController.", dfe); 
      retObject.StringPayload = dfe.InnerException.ToString(); 
     } 
     catch (ArgumentException ae) 
     { 
      Log.Error("An ArgumentException occured while uploading to FileManagerController.", ae); 
      retObject.StringPayload = ae.InnerException.ToString(); 
     } 
     catch (IOException ioe) 
     { 
      Log.Error("An IOException occured while uploading to FileManagerController.", ioe); 
      retObject.StringPayload = ioe.InnerException.ToString(); 
     } 
     catch (ObjectDisposedException ode) 
     { 
      Log.Error("An ObjectDisposedException occured while uploading to FileManagerController.", ode); 
      retObject.StringPayload = ode.InnerException.ToString(); 
     } 
     catch (Exception e) 
     { 
      Log.Error("An unknown exception occured while uploading to FileManagerController.", e); 
      retObject.StringPayload = e.InnerException.ToString(); 
     } 

     return FormatJsonReturnResult.ReturnStandardJsonResult(retObject); 
    } 
+0

где мне нужно положить ajax-обертку? В моем контроллере? – Yunnigg

+0

Оболочка ajax - это только файл JavaScript, содержащий аякс-вызовы на ваш сервер. Это будет зависеть от вас, потому что вы используете PHP. Мой пример - ASP.Net. Я использую ajax для вызова контроллера MVC, вы можете вызвать веб-службу или что-то еще. Я использую оболочку ajax, чтобы поддерживать все вызовы ajax в одном месте, поэтому я знаю, где их найти. Если ваш сайт невелик, вам не повредит ваши айакс-звонки с остальной частью вашего JS-кода, но он может легко стать загроможденным. – JabberwockyDecompiler