开发者社区> 问答> 正文

有一jsp,可文件上传。在swing嵌入浏览器,访问jsp,文件上传失败,服务端未接收到请求

已解决

有一个jsp,具有文件上传功能,浏览器访问可以进行文件上传。 但是用swing嵌入浏览器,在浏览器中访问这个jsp,文件上传却失败了,且服务端未接收到相关请求。

jsp代码如下:

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT="0">
<link rel="stylesheet" type="text/css" href="../themes/metro/easyui.css" />
<link rel="stylesheet" type="text/css" href="../themes/icon.css" />
<link rel="stylesheet" type="text/css" href="../themes/color.css" />
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript" src="../js/jquery.easyui.min.js"></script>
<script type="text/javascript" src="../js/easyui-lang-zh_CN.js"></script>
</head>
<body>
	<div id="toolbar_model_style" style="padding: 4px">
	   <a href="javascript:model_style_upload()"
			class="easyui-linkbutton" iconcls="icon-add" plain="true">新建</a>
	</div>
	
	 <div id="dialog_model_style_upload" class="easyui-dialog"
		title="新建模板" style="width: 800px; height: 760px; overflow: hidden"
		data-options="	modal: true,	closed: true">
		<form id="upModelStyleForm" enctype="multipart/form-data" method="post">
			图片文件:<input id="file" type="file" name="file"  accept="image/png" /> <br>
			模板名:<input id="mStyleName" type="text" name="mStyleName" maxlength="6" placeholder="名称长度不超过6位" style="width: 310px;" /> <br> <br> 
		</form>
		<div align="right">
			<button id="upModelStyleBtn">上传模板</button>
		</div> 
	</div>  
	
	
	<table id="datagrid_model_style" class="easyui-datagrid"
	       title="<span style='color:red;'>【模板列表】</span>"
		data-options="
            url:'/model/style/list?t='+ Math.random(),
            toolbar:'#toolbar_model_style',
            fit:true, border:false, singleSelect:true, collapsible:true, rownumbers:false, fitColumns:true,              
            ">
		<thead>
			<tr>
				<th data-options="field:'myModelStyle',checkbox:true"></th> 
   		        <th data-options="field:'styleName',width:50">模板名称</th>  
 				<th data-options="field:'background',width:160,formatter:img_formatOper">模板图片 </th> 
			</tr>
		</thead>
	</table>

<script type="text/javascript">
	//上传 模板
	function model_style_upload()
	{
		$("#dialog_model_style_upload").dialog("open");
		$("#upModelStyleForm").form("clear");
		$("#upModelStyleForm").form("reset"); 
		$("#upModelStyleBtn").click(
			function() {
				var formData = new FormData($('#upModelStyleForm')[0]);
				$.ajax({
					type : 'post',
					url : "http://192.168.31.228:14020/model/style/add?size=100", 
					data : formData, 
					cache : false,
					processData : false,
					contentType : false,
				}).success(
					function(data) {
						if (data.code != "10000") {
							$.messager.alert( '系统提示', data.msg, 'error');
							return;
						}
						document.getElementById("upModelStyleForm").reset();
						$('#upModelStyleForm').form('clear');
						$('#dialog_model_style_upload').dialog("close");
						$("#datagrid_model_style").datagrid('reload');
					});
			});
		return ;
	}  
 
</script>
</body>
</html>

服务端代码:

// 保存 模板文件
@RequestMapping("/model/style/add")
@ResponseBody
public Map<String, Object> saveModelStyle( MultipartFile file, String mStyleName, String size) {
	Map<String, Object> resultMap = new HashMap<String, Object>();
	//设置存储的路径
	String finalFileName = "/mnt/10086/" + file.getOriginalFilename();
	// 保存文件
	file.transferTo(new File(finalFileName));
	//返回保存结果
	resultMap.put("code", "10000");
	resultMap.put("msg", "模板样式新建成功!");
	return resultMap;
}

Swing包裹jsp的代码:

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;


public class SimpleWebBrowserExample {

  public static JComponent createContent() {
    JPanel contentPane = new JPanel(new BorderLayout());
    JPanel webBrowserPanel = new JPanel(new BorderLayout());
    webBrowserPanel.setBorder(BorderFactory.createTitledBorder("模板管理"));
    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.navigate("http://192.168.31.228:14020/jsp/model.jsp");
    webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
    contentPane.add(webBrowserPanel, BorderLayout.CENTER);
    JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));
    JCheckBox menuBarCheckBox = new JCheckBox("Menu Bar", webBrowser.isMenuBarVisible());
    menuBarCheckBox.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent e) {
        webBrowser.setMenuBarVisible(e.getStateChange() == ItemEvent.SELECTED);
      }
    });
    buttonPanel.add(menuBarCheckBox);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);
    return contentPane;
  }

   
  public static void main(String[] args) {
    NativeInterface.open();
    UIUtils.setPreferredLookAndFeel();
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        JFrame frame = new JFrame("Model_Manage");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(createContent(), BorderLayout.CENTER);
        frame.setSize(800, 600);
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
      }
    });
    NativeInterface.runEventPump();
  }

}

展开
收起
java萌新0321 2020-06-19 10:49:35 3332 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    阿里云OSS提供的分片上传(Multipart Upload)和断点续传功能,可以将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object来达到断点续传的效果。

    适用场景 当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败,重试必须从文件起始位置上传。针对这种情况,您可以使用分片上传来达到断点续传的效果。

    相对于其他的上传方式,分片上传适用于以下场景: 恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。 断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。 加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。 分片上传操作方式 操作方式 说明 命令行工具ossutil 命令行工具,性能好 Java SDK 丰富、完整的各类语言SDK demo Python SDK PHP SDK Go SDK C SDK .NET SDK 断点续传操作方式 在使用分片上传的过程中,如果系统意外崩溃,可以在重启的时候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任务和每个分片上传任务中上传成功的Part列表。这样就可以从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。暂停和恢复上传实现原理也是一样的。 操作方式 说明 Java SDK 丰富、完整的各类语言SDK demo Python SDK Go SDK C SDK .NET SDK Android SDK iOS SDK

    2020-06-19 13:19:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
WEB浏览器中即将发生的安全变化 立即下载
基于浏览器的实时构建探索之路 立即下载
基于浏览器的实时构建探索之路--玄寂 立即下载