针对为什么fromdata传递给req.body如果是文件,但当它是blob时传递给req.files使用react/express-fileupload这个问题,本篇文章进行了详细的解答,同时本文还
针对为什么 fromdata 传递给 req.body 如果是文件,但当它是 blob 时传递给 req.files 使用 react/express-fileupload这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<、apache 的 commons-fileupload 中 FileItem 类和 ServletFileUpload、commons-fileUpload.jar fileUpload.parseRequest (request); 为什么获取不到值、Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解等相关知识,希望可以帮助到你。
本文目录一览:- 为什么 fromdata 传递给 req.body 如果是文件,但当它是 blob 时传递给 req.files 使用 react/express-fileupload
- ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<
- apache 的 commons-fileupload 中 FileItem 类和 ServletFileUpload
- commons-fileUpload.jar fileUpload.parseRequest (request); 为什么获取不到值
- Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
为什么 fromdata 传递给 req.body 如果是文件,但当它是 blob 时传递给 req.files 使用 react/express-fileupload
如何解决为什么 fromdata 传递给 req.body 如果是文件,但当它是 blob 时传递给 req.files 使用 react/express-fileupload?
我发现 5 天前使用 react 和 express-fileupload 上传我的文件有很多问题: 我的 req.files 总是 null 而文件传递给 req.body : body: {file:''[object File]''} 所以我尝试了很多在谷歌中找到的解决方案,但遗憾的是没有任何效果 我试图创建并传递一个 blob,它的工作 blob 传递到 req.files。 PS:当我使用 RESTer 测试我的 URL 时,它正在处理上传的文件。
如果是的话,我应该将我的文件转换为 blob 吗??
我的前端是这样的:
import React,{ Fragment,useState } from ''react'';
import axios from ''axios'';
const FileUpload = () => {
var [file,setFile] = useState('''');
const [filename,setFilename] = useState(''Choose File'');
const onChange = e => {
console.log(e.target.files[0].name)
setFile([e.target.files[0]]);
setFilename(e.target.files[0].name);
console.log(file)
};
const onSubmit = async e => {
e.preventDefault();
const formData = new FormData();
formData.append(''file'',file);
console.log("i m here on submit");
try {
const res = await axios.post(''http://localhost:5001/up'',formData,{
headers: {
''Content-Type'': ''multipart/form-data''
},onUploadProgress: progressEvent => {
setUploadPercentage(
parseInt(
Math.round((progressEvent.loaded * 100) / progressEvent.total)
)
);
}
});
console.log("file read");
} catch (err) {
console.log(err)
setUploadPercentage(0)
}
};
return (
<form onSubmit={onSubmit}>
<div className=''custom-file mb-4''>
<input
type=''file''
className=''custom-file-input''
id=''customFile''
onChange={onChange}
/>
<label className=''custom-file-label'' htmlFor=''customFile''>
{filename}
</label>
</div>
here: {filename}
<input
type=''submit''
value=''Upload''
className=''btn btn-primary btn-block mt-4''
/>
</form>
);
};
export default FileUpload;
和后端:
import express from "express"
import React from "react"
import cors from "cors"
import nez_topographie from "./api/controllers/nez_topographie.route.js"
import fileUpload from "express-fileupload"
import multer from "multer"
import bodyParser from "body-parser"
import morgan from "morgan"
const app = express()
app.use(fileUpload())
app.use(cors())
app.use(express.json())
app.use("/nez_topographie",nez_topographie)
app.post(''/up'',async (req,res) => {
try {
console.log(req)
console.log(req.files.file.name)
if(!req.files) {
console.log("no")
res.send({
status: false,message: ''No file uploaded''
});
} else {
//Use the name of the input field (i.e. "avatar") to retrieve the uploaded file
let avatar = req.files.file;
//Use the mv() method to place the file in upload directory (i.e. "uploads")
avatar.mv(''./'' + avatar.name);
//send response
res.send({
status: true,message: ''File is uploaded'',data: {
name: avatar.name,mimetype: avatar.mimetype,size: avatar.size
}
});
}
} catch (err) {
console.log(err)
res.status(500).send(err);
}
});
export default app
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<
http://blog.csdn.net/rrz634171/article/details/47081537apache 的 commons-fileupload 中 FileItem 类和 ServletFileUpload
FileItem 类的常用方法
1.boolean isFormField ()。isFormField 方法用来判断 FileItem 对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段。如果是普通文本表单字段,返回一个 true 否则返回一个 false。因此可以用该方法判断是否是普通表单域还是文件上传表单域。
2.String getName ()。getName 方法用来获得文件上传字段中的文件名。
3.String getFieldName ()。getFieldName 方法用来返回表单标签的 name 属性的值。
4.void write (File file)。write 方法将 FileItem 对象中的内容保存到某个指定的文件中。如果 FileItem 对象中的内容是保存在某个临时文件中,该方法完成后,临时文件可以会被删除。该方法也可以将普通表单字段保存在一个文件中,但最主要的用途是把上传的文件内容保存在本地文件系统中。
5.String getString ()。getString () 方法将 FileItem 对象中保存的数据流内容以一个字符串返回。它有两个重载形式。public java.lang.String getString () 和 public java.lang.String getString (java.lang.String encodeing) throws java.io.UnsupportedEncodingException。前者使用缺省的字符集编码将主体内容转换成字符串,后者使用参数指定的字符集编码。如果在读取普通表单字段元素的内容时,出现了乱码现象,可以调用第二个方法,并传入 正确的字符集编码名称。
6.String getContentType ()。此方法用来获得上传文件的类型,即标段字段元素描述头属性 “content-type” 的值,如 image/jpeg。如果 FileItem 对象对应的是普通的表单字段,将返回 null。
7.boolean isInMemory ()。判断 FileItem 对象封装的数据是保存在内存中还是硬盘中。
8.void delete ()。此方法用来清空 FileItem 对象中封装的主体内容,如果内容是被保存在临时文件中,该方法会把临时文件删除。
9.InputStream getInputStream ()。以流的形式返回上传文件的主体内容。
10.long getSize ()。返回上传文件的大小。
ServletFileUpload 类
1.FileItemIterator getItemIterator (HttpServletRequest request): 获取文件项的迭代器
Processes an RFC 1867 compliant multipart/form-data stream.
2.static boolean isMultipartContent (HttpServletRequest request): 判断是否包含多部分的内容(在这里可能是上传的文件)
Utility method that determines whether the request contains multipart content.
3.Map<String,List<FileItem>> parseParameterMap (HttpServletRequest request): 将 HttpServletRequst 转化成 map
Processes an RFC 1867 compliant multipart/form-data stream.
4.List<FileItem> parseRequest (HttpServletRequest request): 将 HttpServletRequst 转化成含 FileItem 的 List
Processes an RFC 1867 compliant multipart/form-data stream.
commons-fileUpload.jar fileUpload.parseRequest (request); 为什么获取不到值
fileUpload.parseRequest (request); 为什么获取不到值?
上传 servlet:
// 上传路径
File file = new File("d:/upload");
// 临时文件路径
File tempFile = new File("d:/uploadtemp");
if(!file.exists()){
file.mkdir();
}
if(!tempFile.exists()){
tempFile.mkdir();
}
if(ServletFileUpload.isMultipartContent(request)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024*10);
factory.setRepository(tempFile);
ServletFileUpload fileUpload = new ServletFileUpload(factory);
fileUpload.setSizeMax(1024*1024*10);
try {
List<FileItem> items = fileUpload.parseRequest(request);
for (FileItem item : items) {
if(!item.isFormField()){
String name = item.getName();
System.out.println("name:" + name);
System.out.println("length:" + item.getSize());
item.write(new File("d:/upload/"+name));
}else{
String desc = item.getString("UTF-8");
System.out.println ("文件描述:"+desc);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println("==========================");
throw new RuntimeException ("请设置 form 表单的 enctype 属性");
}
前台表单:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>upload page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="servlet/UpLoadServlet" enctype="multipart/form-data" method="post">
文 件:<input type="file" name=""/><input type="submit"value=" 上传 "/>
</form>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>UpLoadServlet</servlet-name>
<servlet-class>com.cmbc.servlet.UpLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UpLoadServlet</servlet-name>
<url-pattern>/servlet/UpLoadServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
如果想从头学起Cypress,可以看下面的系列文章哦
https://www.cnblogs.com/poloyy/category/1768839.html
官方地址
https://github.com/abramenal/cypress-file-upload
安装方式
npm
npm install --save-dev cypress-file-upload
项目导入插件
在 cypress/support/commands.js 文件下添加下面语句
import 'cypress-file-upload';
实际栗子
测试代码
运行结果
注意事项
- 因为这里用的是 mock,命令是 cy.route() ,但如果换成最新的 cy.intercept() 会失败
- 可以观察下实际项目中是否存在这个问题(主要是上传文件的接口的域名需要和网站同源)
关于为什么 fromdata 传递给 req.body 如果是文件,但当它是 blob 时传递给 req.files 使用 react/express-fileupload的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<、apache 的 commons-fileupload 中 FileItem 类和 ServletFileUpload、commons-fileUpload.jar fileUpload.parseRequest (request); 为什么获取不到值、Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解等相关知识的信息别忘了在本站进行查找喔。
本文标签: