2013-07-10 4 views
-1

Я хотел бы знать, есть ли способ отправить электронное письмо с файлом вложения с GWT. Мне удалось отправить простую электронную почту без вложения, но у меня возникла проблема, когда я пытаюсь добавить файл.Как отправить почту с приложением в GWT?

Проблема заключается в том, что «FileUpload» не дает FULLPATH файла

кажется по соображениям безопасности невозможно получить полный путь к файлу со стороны клиента. Есть ли другой способ сохранить логический сервер в gwt-клиенте?

Мой код

стороне клиента:

FileUpload upload = new FileUpload(); 
// cannot retrieve the full path 
String fileAttachment = upload.getName(); 

стороне сервера:

public void sendMail(String sender, String[] recipients, String subject, String message, String fileAttachment) { 
     try { 
      ...(init)   

      // Part two is attachment 
      messageBodyPart = new MimeBodyPart(); 


        // => fileAttachment need full path 
      DataSource source = 
       new FileDataSource(fileAttachment); 

      messageBodyPart.setDataHandler(
       new DataHandler(source)); 
      messageBodyPart.setFileName(fileAttachment); 
      multipart.addBodyPart(messageBodyPart); 

      // Put parts in message 
      msg.setContent(multipart); 

      // Send 
      Transport.send(msg); 
} 

Спасибо за вашу помощь

+0

Думаю, вам нужно будет сохранить загруженный файл на сервере, а затем указать путь к сохраненному файлу в файле FileDataSource. Фактически, может быть возможно использовать поток ввода-вывода для подачи данных в качестве вложения. –

ответ

1

Вы должны на самом деле загрузить файл на сервер.

Самый простой способ в GWT - разместить FileUpload (и все ваши виджеты ввода формы) в FormPanel; однако у него есть недостаток в обработке ошибок (и обработке ответов с сервера).

В качестве альтернативы, в последние браузеры, чтобы получить File объект (неjava.io.File, объект JS) из FileUpload и загрузить его с помощью XMLHttpRequest (возможно, в сочетании с FormData также отправить другие значения формы) , В GWT это означает использование JSNI (возможно, также можно будет использовать библиотеку Elemental) и действительно знать внутренности того, что вы делаете.

В любом случае вы не сможете использовать GWT-RPC для общения с вашим сервером и отправьте файл в одно и то же время.

+0

Thks для вашей помощи, можете ли вы предоставить мне пример рабочего кода для загрузки файла с помощью gwt? – TimeIsNear

+1

http://stackoverflow.com/questions/9259680/how-to-transfer-a-file-from-client-to-server-in-gwt-using-fileupload/9259847#9259847 – Spiff

Смежные вопросы