我正在使用Spring MVC,这是我的方法:
/**
* Upload single file using Spring Controller
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(@RequestParam("name") String name, @RequestParam("file") MultipartFile file,HttpServletRequest request, HttpServletResponse response) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// Creating the directory to store file
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "tmpFiles");
if (!dir.exists())
dir.mkdirs();
// Create the file on server
File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
System.out.println("Server File Location=" + serverFile.getAbsolutePath());
return null;
} catch (Exception e) {
return null;
}
}
}
我需要在邮递员和文件中传递会话ID。我怎么能这样做?
答案 0 :(得分:82)
在邮递员中,将方法类型设置为 POST 。
然后选择 身体 - &gt; form-data - &gt;输入您的参数名称(根据您的代码文件)
在价值列旁边的右侧,会有下拉&#34;文字,文件&#34; ,选择文件。选择你的图像文件并发布。
其余的&#34; text&#34;基于参数,您可以像通常使用邮递员一样发布。只需输入参数名称并选择&#34; text&#34;从右侧下拉菜单中输入任意值,点击发送按钮。你的控制器方法应该被调用。
答案 1 :(得分:36)
答案 2 :(得分:22)
我认为这是我们在这里缺少的视觉指南,突出显示文件的雅致但几乎看不见的浅灰色 - 白色下拉列表。
后选择POST
,然后选择Body->form-data
,然后找到下拉列表,然后选择'文件',然后才会神奇地出现'选择文件'按钮:
答案 3 :(得分:14)
像这样:
身体 - &gt; form-data - &gt;选择文件
你必须写&#34;文件&#34;而不是&#34; name&#34;
您也可以从Body发送JSON数据 - &gt;原始领域。 (只需粘贴JSON字符串)
答案 4 :(得分:7)
答案 5 :(得分:5)
答案 6 :(得分:5)
如果您需要 使用表单数据以 multipart 格式上传文件,并在同一 POST 请求
中发送 json 数据(Dto对象)在Controller中将JSON对象作为String获取,并通过添加以下行使其反序列化
ContactDto contactDto = new ObjectMapper().readValue(yourJSONString, ContactDto.class);
答案 7 :(得分:5)
答案 8 :(得分:4)
如果有人想以表格数据格式发送json数据,只需声明这样的变量
邮递员:
如您所见,description参数将采用基本的json格式,其结果是:
{ description: { spanish: 'hola', english: 'hello' } }
答案 9 :(得分:2)
对于每个可以设置Content-Type的表单数据键,右侧都有一个邮递员按钮,用于添加Content-Type列,并且您不必从Controller内部的字符串中解析json。
答案 10 :(得分:2)
发送包含包含json数据文件的mulitpart数据的方法如下,我们需要在邮递员正文选项卡中将各个json关键字段的content-type设置为“ application / json”,如下所示:
This link image will tell you about sending the image with json data
答案 11 :(得分:1)
答案 12 :(得分:1)
答案 13 :(得分:1)
看到所有答案后我感到困惑,我找不到任何合适的屏幕截图来显示 Content Type
列。过了一段时间,我自己找到了。希望这能帮助像我这样的人。
步骤如下:
Content Type
)。就我而言:
invoice_id_ls
(键)包含 json
数据。documents
包含 file
数据。placed_amount
包含 normal text
字符串。答案 14 :(得分:0)
在弹簧支座侧使用以下代码:
@PostMapping(value = Constant.API_INITIAL + "/uploadFile")
public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file,String jsonFileVo) {
FileUploadVo fileUploadVo = null;
try {
fileUploadVo = new ObjectMapper().readValue(jsonFileVo, FileUploadVo.class);
} catch (Exception e) {
e.printStackTrace();
}
答案 15 :(得分:0)
我想从POSTMAN上传一个文本文件,该文件将调用我的POST api并进行上传。.使用CURL命令进行测试时,API可以正常工作。
但是无法像我尝试的那样使用POSTMAN:
当我从KEY下的下拉菜单中选择File时,看不到将参数名称从“ File”更改为“ fileToUpload”的选项。
因此从POSTMAN测试时,我的api抛出错误: 所需的请求部分'fileToUpload'不存在。
请更正(如有)。 任何线索都会有所帮助。
答案 16 :(得分:0)
答案 17 :(得分:0)
如果要将Id和File放在一个对象中,则可以将请求对象作为标准方法添加到方法中,然后在Postman中将Body设置为form-data,并在键之前添加请求对象名称。例如request.SessionId和request.File。
答案 18 :(得分:0)
我需要同时传递:文件和整数。我是这样做的:
需要传递文件才能上传: 按照Sumit的回答做了。
请求类型: POST
正文-> 表单数据
在标题 KEY 下输入变量的名称(在我的后端代码中为“文件”)。
在后端:
file = request.files['file']
在“文件”旁边,有一个下拉框,允许您在“文件”或“文本”之间进行选择。选择“文件”,并在标题 VALUE 下显示“选择文件”。单击此按钮将打开一个窗口,以选择文件。
2。 需要传递一个整数:
去:
参数
在 KEY 下输入变量名(例如:id),在 VALUE
下输入其值(例如:1)在后端:
id = request.args.get('id')
工作!
答案 19 :(得分:0)
如果您要发出PUT
请求,只需将所有内容作为POST
请求执行,但添加_method
=&gt; PUT
个form-data
参数。
答案 20 :(得分:0)
如果您使用Cookie来保持会话,您可以使用拦截器来共享从浏览器到邮递员的Cookie。
同样要上传文件,您可以使用邮递员正文标签下的表单数据标签,您可以在其中以键值格式提供数据,并且您可以为每个键选择值文本/文件的类型。当你选择文件类型选项时,似乎上传了文件。
答案 21 :(得分:-1)
要在邮递员中将图像和json数据一起发送,您只需执行以下步骤。
我的控制器:
public function sendImage(Request $request)
{
$image=new ImgUpload;
if($request->hasfile('image'))
{
$file=$request->file('image');
$extension=$file->getClientOriginalExtension();
$filename=time().'.'.$extension;
$file->move('public/upload/userimg/',$filename);
$image->image=$filename;
}
else
{
return $request;
$image->image='';
}
$image->save();
return response()->json(['response'=>['code'=>'200','message'=>'image uploaded successfull']]);
}
就是这样,希望对您有帮助
答案 22 :(得分:-2)
在后端部分
Controller中的其余服务将混合使用@RequestPart和MultipartFile来满足此类Multipart + JSON请求。
@RequestMapping(value = "/executesampleservice", method = RequestMethod.POST,
consumes = {"multipart/form-data"})
@ResponseBody
public boolean yourEndpointMethod(
@RequestPart("properties") @Valid ConnectionProperties properties,
@RequestPart("file") @Valid @NotNull @NotBlank MultipartFile file) {
return projectService.executeSampleService(properties, file);
}
在前端:
formData = new FormData();
formData.append("file", document.forms[formName].file.files[0]);
formData.append('properties', new Blob([JSON.stringify({
"name": "root",
"password": "root"
})], {
type: "application/json"
}));
请参阅图片(POSTMAN请求):
Click to view Postman request in form data for both file and json