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是的,我想发送该文件中的内容,然后从第二个服务读取。可能是您想要的看看:)