how to upload file into server directory with grails?

前端 未结 3 1864
旧时难觅i
旧时难觅i 2020-12-10 19:35

how to upload file into server directory.. if my project at D:\\myapp and i run with cmd d:\\myapp grails run-app when i run this app and other Computer run it and upload fi

相关标签:
3条回答
  • 2020-12-10 19:51

    final String IMAGE_DIR = "${servletContext.getRealPath('/images')}/";

        def employeeId = "dablu_photo";
    
        def employeePicture = request.getFile("cv_");
    
        String photoUrl  ="";
        if (employeePicture && !employeePicture.empty) {
            if (new java.io.File(IMAGE_DIR+"/employee_photo/"+employeeId+".png")?.exists()){
                FileUtils.deleteQuietly(new java.io.File(IMAGE_DIR+"/employee_photo/"+employeeId+".png"));
            }
            employeePicture.transferTo(new java.io.File(IMAGE_DIR+"/employee_photo/"+employeeId+".png"))
    
        }
    
    0 讨论(0)
  • 2020-12-10 19:55

    The destination is only a file like in Java.

    def f = request.getFile('some_file')
    
    //validate file or do something crazy hehehe
    
    //now transfer file
    File fileDest = new File("Path to some destination and file name")
    f.transferTo(fileDest)
    

    OR if you want to store it at some path relative to user home:

    def homeDir = new File(System.getProperty("user.home")) //user home e.g /home/username for unix
    File fileDest = new File(homeDir,"path/to/some_folder")
    f.transferTo(fileDest)
    

    UPDATE As per why your getFile is not working, you are not submitting your form:

    <g:form action="list" enctype="multipart/form-data" useToken="true">
    
    <span class="button">                   
                        <input type="file" name="filecsv"/>
                        <input type="button" class="upload"
                                            value="Upload"
                                            onclick='location.href = "${createLink(url: [action: 'upload'])}"'/>
    
                </span>
    
    </g:form>
    

    Should be:

    <g:form action="upload" enctype="multipart/form-data" useToken="true">
    
    <span class="button">                   
                        <input type="file" name="filecsv"/>
                        <input type="submit" class="upload" value="upload"/>
    
                </span>
    
    </g:form>
    

    if you need to use javascript you should submit the form instead of adding a link to another page.

    0 讨论(0)
  • 2020-12-10 20:00

    The location of your Grails app doesn't matter. You have to specify the full destination path in your controller. Here is an example

    def upload() {
        def f = request.getFile('filecsv')
        if (f.empty) {
            flash.message = 'file cannot be empty'
            render(view: 'uploadForm')
            return
        }
    
        f.transferTo(new File('D:\myapp\upload\file_name.txt')) 
        response.sendError(200, 'Done') 
    }
    
    0 讨论(0)
提交回复
热议问题