【问题标题】:How to receive Angular $http post multipart form data in Grails如何在 Grails 中接收 Angular $http 发布多部分表单数据
【发布时间】:2015-11-19 16:12:05
【问题描述】:

如何从 Grails 接收有角度的 $http post 多部分表单数据。在这里,我将多部分表单数据从 Angular 控制器发送到 Grails。我是 Grails 的新手。

任何人都可以指导我检索边界数据。我不确切知道接收带有一些输入数据的图像文件数据的正确形式。

浏览器网络控制台中的请求标头:

Provisional headers are shown
Accept:application/json, text/plain, */*
Content-Type:multipart/form-data; boundary=----    
WebKitFormBoundary0p6R8BecvYqzcbMK
Origin:file://
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us)        
AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465     Safari/9537.53
Request Payload
------WebKitFormBoundary0p6R8BecvYqzcbMK
Content-Disposition: form-data; name="rackImage"; filename="PhoneGap.png"
Content-Type: image/png


------WebKitFormBoundary0p6R8BecvYqzcbMK
Content-Disposition: form-data; name="storeNo"

HD1304

------WebKitFormBoundary0p6R8BecvYqzcbMK
Content-Disposition: form-data; name="rackQty"

12
------WebKitFormBoundary0p6R8BecvYqzcbMK--

【问题讨论】:

  • 听起来您正在尝试检索数据,但您使用的是 POST 请求?这不是安逸的方式。通常 HTTP GET 用于从服务器获取数据,而 POST 用于将数据发送到服务器。
  • 您的$http.post 是什么样的?到目前为止,您在控制器操作中尝试了什么?

标签: javascript angularjs grails multipartform-data grails-controller


【解决方案1】:

给你。只需在您的控制器中编写以下内容:

class MyController {

    def upload() {
        def multipartFile = params.rackImage

        InputStream is
        FileOutputStream fos

        byte[] fileRead = new byte[1024]
        File tempFile

        try {
            is = multipartFile.getInputStream()
            String fileName = multipartFile.getOriginalFilename()

            String path = "./"

            fileName = fileName.replaceAll("[^a-zA-Z0-9//._-]+", "").toLowerCase()

            tempFile = new File(path + "" + fileName)
            fos = new FileOutputStream(tempFile);
            int i = is.read(fileRead)
            while (i != -1) {
                fos.write(fileRead, 0, i);
                i = is.read(fileRead);
            }
        } catch (FileNotFoundException e) {
            log.error "Exception uploading", e
        } catch (IOException e) {
            log.error "Exception uploading", e
        } finally {
            fos?.close()
            is?.close()
        }

        // Now access the File: "tempFile"
    }
}

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2016-11-08
    • 2016-05-13
    相关资源
    最近更新 更多