go文件代码
package main
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"log"
"mime/multipart"
"net/http"
"os"
)
func main() {
postFormDataWithSingleFile()
}
func postFormDataWithSingleFile() {
imagePostURL:="http://qilipu.com/api/Go/img"
client := http.Client{}
bodyBuf := &bytes.Buffer{}
bodyWrite := multipart.NewWriter(bodyBuf)
file, err := os.Open("123.png")
if err==nil{
defer file.Close()
}
if err != nil {
log.Println("err0",err)
}
// file 为key
fileWrite, err := bodyWrite.CreateFormFile("file", "img.jpg")
_, err = io.Copy(fileWrite, file)
if err != nil {
log.Println("err1",err)
}
_ =bodyWrite.WriteField("date", "2022-09-24")//设置额外的参数
bodyWrite.Close() //要关闭,会将w.w.boundary刷写到w.writer中
// 创建请求
contentType := bodyWrite.FormDataContentType()
req, err := http.NewRequest(http.MethodPost, imagePostURL, bodyBuf)
if err != nil {
log.Println("err2",err)
}
// 设置头
req.Header.Set("Content-Type", contentType)
resp, err := client.Do(req)
if err != nil {
log.Println("err3",err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("err4",err)
}
fmt.Println(string(b))
}
php后台接受代码
public function img(){
if($_FILES){
$ym=date('Ymd');
$filepath=ROOT_PATH.'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.'go'.DIRECTORY_SEPARATOR.$ym.DIRECTORY_SEPARATOR;
$file = $_FILES['file'];
$file_name = $file['name'];
$tmp_file = $file['tmp_name'];
$error = $file['error'];
if($error == 0){
move_uploaded_file($tmp_file, $filepath.$file_name);
}
$img_url=$this->request->scheme().'://'.$_SERVER['HTTP_HOST'].'/uploads/go/'.$ym.'/'.$file_name;
$this->success('请求成功',['img_url'=>$img_url]);
}
}
仅供学习使用