input file文件上传简单示例

<form action="<%=request.getContextPath()%>/chat" method="post"
    enctype="multipart/form-data" data-ajax="false" name="form" id="form"  target="relnews">
    <input type="hidden" name="name" id="name" value="" /> 
    <input type="hidden" name="taskId" id="taskId" value="" /> 
    <input type="file" name="image" id="image" class="photo" onchange="sendImage(this)" />
</form>

<!-- 隐藏域作为表单提交后页面不跳转使用 -->
	<iframe align="center" frameborder="0" marginheight="0" marginwidth="0"
		name="relnews" id="hiddenIframe" scrolling="no"
		style="width: 100%; height: 100%; display: none"> </iframe>

js:
function sendMessage() {
    var text = DWRUtil.getValue("message");
    if("" != text){
        DWRUtil.setValue("message", "");
        Chat.addMessage(text, name, taskId, gotMessages);
    }
}

直接上代码解释:

jar包:commons-io-1.4.jar

commons-fileupload-1.2.2.jar

log4j-1.2.14.jar

如果参考我写的框架还需要加入dwr的jar包:dwr.jar

(广告时间:我的action 调用的js 是 用的dwr 提交实现的,有兴趣的可以参考博文http://my.oschina.net/u/1790925/blog/366346

这里我的目的是选择一张图片后直接上传到服务器上,没有通过submit按钮提交,同时要把一些文字信息带入,因为上传图片的关键要设置

enctype="multipart/form-data"

而这个设置之后。后台则无法通过request方法直接获得文字属性了。所以后台取值也采用了特殊的方法。

/**
	 * 原生request处理图片上传
	 * 
	 * */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		//获取请求URL
		String url = request.getContextPath();
		//创建图片工厂类
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//创建上传工具类
		ServletFileUpload uploader = new ServletFileUpload(factory);
		List<FileItem> list = null;

		try {
			//格式化request
			list = uploader.parseRequest(request);
		} catch (FileUploadException e1) {
			e1.printStackTrace();
		}

		String name = "";//用户名
		String taskid = "";//任务ID
		String fileName = "";//文件名称
		for (FileItem item : list) {
			if (item.isFormField()) {
				// 处理普通表单域,form表单设置enctype="multipart/form-data" 时 表单中其他input控件需要通过该方式取值
				String field = item.getFieldName();// 表单域名,既参数名称

				if (field.equals("name")) {
					name = item.getString("UTF-8");// 这里需要设置页面的编码方式,与页面编码方式相同
				} else if (field.equals("taskId")) {
					taskid = item.getString("UTF-8");// 同上
				}
			} else {
				fileName = item.getName();// 文件名称
				int index = fileName.lastIndexOf("\\");
				if (index != -1) {
					fileName = fileName.substring(index + 1);
				}
				// 创建一个以当前时间+文件名格式的图片名称,如图片名:image.png → 20150108082222image.png  以确保图片唯一
				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
				fileName = sdf.format(new Date()) + fileName;
				
				//判断是否存在图片文件夹不存在则新建
				try {
					   if (!(new File(getServletContext().getRealPath(
								"/pic")).isDirectory())) {
					    new File(getServletContext().getRealPath(
								"/pic")).mkdir();
					   }
					  } catch (SecurityException e) {
					   e.printStackTrace();
					  }
				
				//图片上传到服务器路径下的pic目录中
				String filepath = "pic/" + fileName;
				try {
					item.write(new File(getServletContext().getRealPath(
							"/" + filepath)));
				} catch (Exception e) {
					e.printStackTrace();
				}// 执行保存
			}
			if (!item.isInMemory())
				item.delete();
		}






转载于:https://my.oschina.net/u/1790925/blog/367570

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于LSTM的财务因子预测选股模型LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值