2013-05-31 6 views
1

Мне интересно, как я могу сохранить загруженное изображение в grails.Как сохранить загруженное изображение

Ситуация: У меня есть страница gsp с формой, содержащей загрузку файла. Я попытался получить данные из файла, но это просто не сработает.

В контроллере:

def file = request.getFile('fileupload') 
    appearanceInstance.logo = file.encodeAsBase64().toString() 

По мнению:

 <g:form action="save" enctype="multipart/form-data"> 
       <div class="file-upload"> 
        <label >Choose logo</label> 
        <input id="fileupload" type="file" name="fileupload" onchange="handleFileSelect(this)"/> 
       </div><br/> 
       <br/> 
    </g:form> 

Любой, кто имел опыт работы с этим?

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

Заранее благодарен!

UPDATE:

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

ответ

3

Я думаю, этот пример Simple Avatar Uploader ответит на все ваши вопросы

+0

Спасибо! Я думаю, это будет работать. – leke

0

Привет, попробуйте с этим.

Защиту сохранить = {

def requestInstance = new Request(params) 
def requestNumberInstance = new RequestNumber() 

if(requestInstance.validate() && requestInstance.save(flush: true)){ 
    println "Saved successfully with ${requestInstance.picture1.length} bytes" 
} 
else { 
    println "Save failed" 
} 
+0

Я видел сообщение, используя этот код, но это не то, что я ищу. Я ищу способ конвертировать загруженное изображение в base64. Поэтому я хочу получить значение «uploadedimage» из представления. – leke

1

попробовать это я надеюсь, что это поможет вам, что это работает для меня также посмотреть post

Class SomeController{ 
    def uploader(){ 

    } 
    def save(){ 
    String s="" 
    CommonsMultipartFile f=request.getFile('fileupload') 
    final String name =f.getOriginalFilename() 
    def fos= new FileOutputStream(new File(name)) 
    f.getBytes().each{ fos.write(it) } 
    s=Base64.encode(f.getBytes()) 
     fos.flush() 
     fos.close() 
    render 'done now refresh your source directory to see the file ${s}' 
} 

и вид 'uploader.gsp'

<g:form action="save" enctype="multipart/form-data"> 
     <div class="file-upload"> 
      <label>Choose logo</label> <input id="fileupload" type="file" 
       name="fileupload" /> 
     </div> 
     <input type="submit" class="buttons" value="Upload" /> 
    </g:form> 
Смежные вопросы