- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试测试端点时如何设置 Request.FormFile?
部分代码:
func (a *EP) Endpoint(w http.ResponseWriter, r *http.Request) {
...
x, err := strconv.Atoi(r.FormValue("x"))
if err != nil {
a.ren.Text(w, http.StatusInternalServerError, err.Error())
return
}
f, fh, err := r.FormFile("y")
if err != nil {
a.ren.Text(w, http.StatusInternalServerError, err.Error())
return
}
defer f.Close()
...
}
最佳答案
您不需要按照其他答案的建议模拟完整的 FormFile 结构。 mime/multipart
package 实现了 Writer 类型,可让您创建 FormFile。来自 the docs
CreateFormFile is a convenience wrapper around CreatePart. It createsa new form-data header with the provided field name and file name.
func (w *Writer) CreateFormFile(fieldname, filename string) (io.Writer, error)
然后,您可以将此 io.Writer 传递给
httptest.NewRequest
,它接受一个读者作为参数。
request := httptest.NewRequest("POST", "/", myReader)
为此,您可以将 FormFile 写入 io.ReaderWriter 缓冲区或使用 io.Pipe。这是一个使用管道的完整示例:
func TestUploadImage(t *testing.T) {
// Set up a pipe to avoid buffering
pr, pw := io.Pipe()
// This writer is going to transform
// what we pass to it to multipart form data
// and write it to our io.Pipe
writer := multipart.NewWriter(pw)
go func() {
defer writer.Close()
// We create the form data field 'fileupload'
// which returns another writer to write the actual file
part, err := writer.CreateFormFile("fileupload", "someimg.png")
if err != nil {
t.Error(err)
}
// https://yourbasic.org/golang/create-image/
img := createImage()
// Encode() takes an io.Writer.
// We pass the multipart field
// 'fileupload' that we defined
// earlier which, in turn, writes
// to our io.Pipe
err = png.Encode(part, img)
if err != nil {
t.Error(err)
}
}()
// We read from the pipe which receives data
// from the multipart writer, which, in turn,
// receives data from png.Encode().
// We have 3 chained writers!
request := httptest.NewRequest("POST", "/", pr)
request.Header.Add("Content-Type", writer.FormDataContentType())
response := httptest.NewRecorder()
handler := UploadFileHandler()
handler.ServeHTTP(response, request)
t.Log("It should respond with an HTTP status code of 200")
if response.Code != 200 {
t.Errorf("Expected %s, received %d", 200, response.Code)
}
t.Log("It should create a file named 'someimg.png' in uploads folder")
if _, err := os.Stat("./uploads/someimg.png"); os.IsNotExist(err) {
t.Error("Expected file ./uploads/someimg.png' to exist")
}
}
此函数使用
image
包以动态生成文件,利用您可以传递
io.Writer
的事实至
png.Encode
.同样,您可以传递您的多部分 Writer 以生成 CSV 格式的字节(包“encoding/csv”中的 NewWriter),即时生成文件,而无需从文件系统中读取任何内容。
关于go - 测试 Go http.Request.FormFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65217072/
我想在我的种子函数中创建一个 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
我是一名优秀的程序员,十分优秀!