- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想用 json 正文和测试文件测试 httpRequest。我不知道如何将创建的测试文件添加到 body json 旁边的请求。
body := strings.NewReader(URLTest.RequestBody)
request, err := http.NewRequest(URLTest.MethodType, "localhost:"+string(listeningPort)+URLTest.URL, body)
if err != nil {
t.Fatalf("HTTP NOT WORKING")
}
fileBuffer := new(bytes.Buffer)
mpWriter := multipart.NewWriter(fileBuffer)
fileWriter, err := mpWriter.CreateFormFile("file", "testfile.pdf")
if err != nil {
t.Fatalf(err.Error())
}
file, err := os.Open("testfile.pdf")
if err != nil {
t.Fatalf(err.Error())
}
defer file.Close()
_, err = io.Copy(fileWriter, file)
if err != nil {
t.Fatalf(err.Error())
}
rec := httptest.NewRecorder()
UploadFiles(rec, request, nil)
response := rec.Result()
if response.StatusCode != URLTest.ExpectedStatusCode {
t.Errorf(URLTest.URL + " status mismatch")
}
responseBody, err := ioutil.ReadAll(response.Body)
defer response.Body.Close()
if err != nil {
t.Errorf(URLTest.URL + " cant read response")
} else {
if strings.TrimSpace(string(responseBody)) != URLTest.ExpectedResponseBody {
t.Errorf(URLTest.URL + " response mismatch - have: " + string(responseBody) + " want: " + URLTest.ExpectedResponseBody)
}
}
}
我可以将文件添加为 request.FormFile.Add(...)
之类的值吗?
最佳答案
关于如何使用 Go 在 HTTP 请求中发送文件的问题,这里有一些示例代码。
你需要 mime/multipart
package构建表单。
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"net/http/httptest"
"net/http/httputil"
"os"
"strings"
)
func main() {
var client *http.Client
var remoteURL string
{
//setup a mocked http client.
ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
b, err := httputil.DumpRequest(r, true)
if err != nil {
panic(err)
}
fmt.Printf("%s", b)
}))
defer ts.Close()
client = ts.Client()
remoteURL = ts.URL
}
//prepare the reader instances to encode
values := map[string]io.Reader{
"file": mustOpen("main.go"), // lets assume its this file
"other": strings.NewReader("hello world!"),
}
err := Upload(client, remoteURL, values)
if err != nil {
panic(err)
}
}
func Upload(client *http.Client, url string, values map[string]io.Reader) (err error) {
// Prepare a form that you will submit to that URL.
var b bytes.Buffer
w := multipart.NewWriter(&b)
for key, r := range values {
var fw io.Writer
if x, ok := r.(io.Closer); ok {
defer x.Close()
}
// Add an image file
if x, ok := r.(*os.File); ok {
if fw, err = w.CreateFormFile(key, x.Name()); err != nil {
return
}
} else {
// Add other fields
if fw, err = w.CreateFormField(key); err != nil {
return
}
}
if _, err = io.Copy(fw, r); err != nil {
return err
}
}
// Don't forget to close the multipart writer.
// If you don't close it, your request will be missing the terminating boundary.
w.Close()
// Now that you have a form, you can submit it to your handler.
req, err := http.NewRequest("POST", url, &b)
if err != nil {
return
}
// Don't forget to set the content type, this will contain the boundary.
req.Header.Set("Content-Type", w.FormDataContentType())
// Submit the request
res, err := client.Do(req)
if err != nil {
return
}
// Check the response
if res.StatusCode != http.StatusOK {
err = fmt.Errorf("bad status: %s", res.Status)
}
return
}
希望你能在你的单元测试中使用它
关于go - 想在单元测试 Golang 中添加一个 FormFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52993355/
我想在我的种子函数中创建一个 FormFile。但是我得到一个空引用异常。这是我的代码 FileStream fs = new FileStream("testfile.jpg", FileMode.
Struts中FormFile用于文件进行上传 1.在jsp文件中进行定义 ?
我正在做一个 ASP .NET Core MVC Web 应用程序。 Web 应用程序中有一个模块可以将文件上传到 Blob 存储。 以下是我用来将文件上传到 blob 存储的函数: public C
我有一个带有以下 ActionForm 的 Struts 1 应用程序: import org.apache.struts.upload.FormFile; public class uploaded
struts的FormFile接口(interface)的getFileName()方法是否对文件名进行过滤? Struts documentation for method getfileName
我有一个带有文件路径的字符串,我想用这个字符串实例化一个new FormFile。有可能吗..? 我的代码: public ArrayList getFilesFromFolder(Strin
formFile 函数工作完美,但 in the docs据说“FormFile 返回所提供表单键的第一个文件”。有没有一种方法可以获取带有以下输入的 html 表单的几个文件: 可能会回来? 最佳
我让用户使用 FormFile 上传文件。我应该在什么时候检查文件大小是否太大。当我做的时候 file, header, fileErr := r.FormFile("file") 一个文件对象已经
我想用 json 正文和测试文件测试 httpRequest。我不知道如何将创建的测试文件添加到 body json 旁边的请求。 body := strings.NewReader(URLTest.
尝试测试端点时如何设置 Request.FormFile? 部分代码: func (a *EP) Endpoint(w http.ResponseWriter, r *http.Request) {
我正在将 Echo 框架用于接受表单数据的 post 端点。我使用 Struct 作为绑定(bind)模型来提取表单数据。我的绑定(bind)模型和上传处理程序代码如下所示。 type FormMo
可以将 Image 对象转换为 FormFile 对象......? 最佳答案 您指的是 Apache Struts FormFile ?如果是这样,那么您可能想要创建一个 CommonsMultip
我想通过集成测试来测试将文件附加到 RavenDB 数据库中的文档的功能。为此,我需要一个 IFormFile 的实例。 显然,我无法从接口(interface)实例化,所以我尝试实例化 FormFi
我正在用 go 编写一个网络服务器。 在其中一个页面上,用户可以上传文件。 我希望能够处理 zip 文件。 在 archive/zip 包中,我只看到两个允许我从 zip 存档中读取的函数: func
尝试测试端点时如何设置 Request.FormFile? 部分代码: func (a *EP) Endpoint(w http.ResponseWriter, r *http.Request) {
我有一个对象 FormFile 通过 Struts Form 恢复。我必须在 java.io.File 中转换 Java 端我能怎么做?异常以这种方式进行转换: File myFile = (File
我面临的情况是,我必须将 java.io.File 对象转换为 Struts org.apache.struts.upload.FormFile 对象。类型转换导致错误。任何人都可以建议我可以用来执行
我在前端(FE)中处理响应时遇到问题。我正在发送一个文件和一个对象作为状态,但在FE中,一旦响应到来,文件将被转换为对象,并且无法正常下载。我被困在这里了。我尝试使用responseType作为Blo
我正在努力使用 python 自动生成报告。在Word文档中,我需要更新表单字段以完成报告生成。在使用 win32.com.client.gencache.EnsureDispatch api 时,我
使用 IFormFile 时,我在运行时收到此错误: Could not load type 'Microsoft.AspNetCore.Http.Internal.FormFile' from as
我是一名优秀的程序员,十分优秀!