Csv 在两个微服务之间发送文件

Csv 在两个微服务之间发送文件,csv,go,microservices,Csv,Go,Microservices,我有两个作为微服务运行的服务,我使用Service-1从用户那里获取文件,然后尝试POST将其发送到Service-2,在那里它将被读取和处理。 这是我试过的 服务-1: 表格数据如下所示: <form class="formContainer" id="my_form" action="http://usagemeter:7171/addmanagerstouser"> </form> 此处,csv以ht

我有两个作为微服务运行的服务,我使用
Service-1
从用户那里获取文件,然后尝试
POST
将其发送到
Service-2
,在那里它将被读取和处理。 这是我试过的

服务-1:

表格数据如下所示:

<form  class="formContainer"  id="my_form" action="http://usagemeter:7171/addmanagerstouser">
</form>
此处,csv以html格式作为
用户管理器
传递

服务-2:

func addManagersToUsers(res http.ResponseWriter,req *http.Request){
    file := req.FormValue("usermanagers")

    fd, err := os.Open(file)
    if err != nil {
        log.Println("Error opening file")
        fmt.Fprintf(res,"false")
        return
    }
    defer fd.Close()
}
这里我没有得到这样的文件或目录

我错过了什么?这可能吗?或者必须使用另一种方法来执行此操作?

这显示主机将
发布文件的内容:

func SendPostRequest (url string, filename string, filetype string) []byte {
    file, err := os.Open(filename)  
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, err := writer.CreateFormFile(filetype, filepath.Base(file.Name()))  
    if err != nil {
        log.Fatal(err)
    }

    io.Copy(part, file)
    writer.Close()
    request, err := http.NewRequest("POST", url, body)

    if err != nil {
        log.Fatal(err)
    }

    request.Header.Add("Content-Type", writer.FormDataContentType())
    client := &http.Client{}

    response, err := client.Do(request)

    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    content, err := ioutil.ReadAll(response.Body)
    if err != nil {
        log.Fatal(err)
    }

    return content
}
并显示如何接收它:

func ReceiveFile(w http.ResponseWriter, r *http.Request) {
    r.ParseMultipartForm(32 << 20) // limit your max input length!
    var buf bytes.Buffer
    file, header, err := r.FormFile("file")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    name := strings.Split(header.Filename, ".")
    fmt.Printf("File name %s\n", name[0])
    io.Copy(&buf, file)
    contents := buf.String()
    fmt.Println(contents) // <- process file body here
    buf.Reset()

    return
}
func接收文件(w http.ResponseWriter,r*http.Request){
r、 ParseMultipartForm(32这显示了文件内容的主机:

func SendPostRequest (url string, filename string, filetype string) []byte {
    file, err := os.Open(filename)  
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)
    part, err := writer.CreateFormFile(filetype, filepath.Base(file.Name()))  
    if err != nil {
        log.Fatal(err)
    }

    io.Copy(part, file)
    writer.Close()
    request, err := http.NewRequest("POST", url, body)

    if err != nil {
        log.Fatal(err)
    }

    request.Header.Add("Content-Type", writer.FormDataContentType())
    client := &http.Client{}

    response, err := client.Do(request)

    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    content, err := ioutil.ReadAll(response.Body)
    if err != nil {
        log.Fatal(err)
    }

    return content
}
并显示如何接收它:

func ReceiveFile(w http.ResponseWriter, r *http.Request) {
    r.ParseMultipartForm(32 << 20) // limit your max input length!
    var buf bytes.Buffer
    file, header, err := r.FormFile("file")
    if err != nil {
        panic(err)
    }
    defer file.Close()
    name := strings.Split(header.Filename, ".")
    fmt.Printf("File name %s\n", name[0])
    io.Copy(&buf, file)
    contents := buf.String()
    fmt.Println(contents) // <- process file body here
    buf.Reset()

    return
}
func接收文件(w http.ResponseWriter,r*http.Request){

r、 解析多部件形式(32)您正在将文件名从一个服务发送到另一个服务。如果这两个服务在不同的主机上运行,接收服务无法打开文件路径也就不足为奇了。您的意思是在POST中发送文件正文吗?@colm.anseo是的,我想发送该文件中的内容,然后从第二个服务读取它。也许您想要什么t看:)您正在将文件名从一个服务发送到另一个服务。如果两个服务在不同的主机上运行,接收服务无法打开文件路径也就不足为奇了。您的意思是在POST中发送文件正文吗?@colm.anseo是的,我想发送该文件中的内容,然后从第二个服务读取。可能是您想要的看看:)