上传文件到tomcat服务器
A. 毕设:用java web编写的本地文件上传到tomcate服务器最后提示上传成功但是在相应的目录下找不到上传的文件
有两种可能:
一、你的程序显示成功,但是只是个输出显示成功的语句,而实际上并没有上传文件;
二、文件确实上传成功了。但是你找的文件夹的路径不对。这种问题你可以这样验证:在tomcat所在的路径下,用电脑的文件搜索搜一下你上传的文件名,看能不能搜到。能搜到就说明是你找错位置了。搜不到就是真的没有上传成功。
B. 如何保存文件到服务器的tomcat目录下
一般情况下,不直接把文件保存到服务器上,如果确保你的程序文件没有bug,才能上传到服务器上。服务器上直接保存迅旦的话,需要先在服务器上开通ftp服务,伍毕并设置不允许匿名访问,每个用户有自己的用户名和密码去访问,在开发工具中选择保存路径的时候,选择网络上就可以了。
如果是要上传文件到服务器,可以做一个上传的工具,在本机上浏览选择文件,然后上亩橘扰传,需要做好权限的限制。
C. Android打开系统相册返回一张图片,如何将返回的图片上传到Tomcat服务器中
文件上传需要用到HttpClient,打开系统相册需要通过内容提供者调用android相册或者文件管理器(源代码查看附件)关于HttpClient的文件上传HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。
一、HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很着名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。
二、特性
1. 基于标准、纯净的java语言。实现了Http1.0和Http1.1
2. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
3. 支持HTTPS协议。
4. 通过Http代理建立透明的连接。
5. 利用CONNECT方法通过Http代理建立隧道的https连接。
6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认证方案。
7. 插件式的自定义认证方案。
8. 便携可靠的套接字工厂使它更容易的使用第三方解决方案。
9. 连接管理器支持多线程应用。支持设置最大连接数,同时支持设置每个主机的最大连接数,发现并关闭过期的连接。
10. 自动处理Set-Cookie中的Cookie。
11. 插件式的自定义Cookie策略。
12. Request的输出流可以避免流中内容直接缓冲到socket服务器。
13. Response的输入流可以有效的从socket服务器直接读取相应内容。
14. 在http1.0和http1.1中利用KeepAlive保持持久连接。
15. 直接获取服务器发送的response code和 headers。
16. 设置连接超时的能力。
17. 实验性的支持http1.1 response caching。
18. 源代码基于Apache License 可免费获取。
三、使用方法
使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。
1.创建HttpClient对象。
2.创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3.如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5.调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6.释放连接。无论执行方法是否成功,都必须释放连接
D. 问一下如何上传文件到tomcat的webapps文件夹中
没必要上传的(要上传的话,可以先找到编译路径,之后直接复制进去),直接编译到此路径下即可。
第一步:在server运行的窗口,双击要编译的server路径名称。
第二步:设置“Server location”中的第二个“Use Tomcat...”,之后选择“browse”,之后直接定位到“webapps”路径下即可,
第三步:之后将要编译的项目直接添加到此server下,即可完成自动编译;
E. 如何上传html网页至tomcat服务器
1、直接把html 代码放到tomcat的webapps文件夹下;
2、直接启动tomcat;
3、在浏厅腔览器扮档衫端输入http://localhost:9080/你的项目名称蠢消;
F. java文件上传到tomcat服务器
你好:你的是保存包eclipse的默认路径下了,如果你想上传文件的话,必须制定resource的存储路径,可以是相对的,也可以是绝对的!
G. 图片怎么上传到tomcat服务器,tomcat服务器如何构建
你可以在系统里面做一个上传的功能,然后就能把图片上传到tomcat服务器了啊。
tomcat服务器不用构建。直接下载下来就能用。
H. 为什么上传到tomcat服务器upload文件过一会儿会消失,连创建的文件夹结构也消失了,急求大神解决
先说解决办法吧,后面在分析:
1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容,
2.修改/tomcat/conf/web.xml文件:
<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param>仿镇<param-name>listings<咐慎/param-name><param-value>true</param-value></init-param><load-on-startup>1</load-on-startup></servlet
3.修改/tomcat/conf/server.xml文件:
<Host name="localhost" appBase="webapps"衡大敬unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"><!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --><!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --><!-- Access log processes all example. Documentation at: /docs/config/valve.html --><!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> --><!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context><!--<Context path="/mvc" docBase="D:\project\myProject\你的项目名\WebRoot"></Context>--></Host>
分析:
重新redeploy的时候, tomcat 会同步你本地的文件 ,因为本地没有相应的文件夹导致文件丢失。
这只是在开发过程中会遇到的问题 实际应用中 tomcat 只会 startup.bat/sh shutdown.bat/sh
我们这样做,其实就是给工程配置虚拟路径,这样tomcat在启动的时候直接找到工程了,
上传的图片就不会仅仅只在/tomcat/webapps/目录,而直接到了你的工程里,
不管你怎样重启项目,或者清理缓存,上传的文件依然存在!
I. 怎么向tomcat服务器上传文件
1.将tomcat环境搭配好
path中加入:
%CATALINA_HOME%\lib;%CATALINA_HOME%\bin;
2.修改tomcat中config/server.xml
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/>
<Context docBase="D:\workspace\picture\target\mvc-basic.war" path="/picture"/>
</Host>
添加红色部分
docBase中要为项目打包成的war文件。
path随意
启动tomcat bin\startup.bat,如果这时tomcat一闪而过,表示启动异常,很可能是配置或者server.xml出问题了。
注意:有时即使更改了war文件里面的文件,程序仍然没有任何变化,这个时候要把apache-tomcat-7.0.11\webapps下的项目文件给删除,再重新启动tomcat。
由于我是用eclipse开发的,下面那段红色线表示我发布的位置,wtpwebapps下,我试过,只有把图片放在D:\workspace
\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\ROOT里面项目
才能读取到图片。而如果将项目打包成war后,更改<Context docBase="D:\workspace\picture\target\mvc-basic.war" path="/picture"/>更tomcat的根目录是apache-tomcat-7.0.11\webapps,只需要在这个下面建立images目录,把图片往里面存就行了。
3.代码
[java] view plain
private static final String PICTURE_WEB_INF = "/picture/WEB-INF";
private static final String ROOT_IMAGES_PICTURE = "/ROOT/images/picture";
private static final String IMAGES_PICTURE = "/images/picture";
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String save(Picture picture, HttpServletRequest request) {
this.FileAndSaveFile(request, picture);
this.pictureService.save(picture);
return "redirect:/index";
}
private void FileAndSaveFile(HttpServletRequest request, Picture material) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
for (Map.Entry<String, MultipartFile> entity : multipartRequest.getFileMap().entrySet()) {
MultipartFile mf = entity.getValue();
String uuid = UUID.randomUUID().toString();
String classPath = this.getClass().getClassLoader().getResource("/").getPath();
try {
classPath =URLDecoder.decode(classPath, "gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
classPath = classPath.split(PICTURE_WEB_INF)[0];
File pictureFile = new File(classPath+ROOT_IMAGES_PICTURE);
if(!pictureFile.exists()){
pictureFile.mkdirs();
}
String path = pictureFile.getPath();
String ext = null;
try {
if (null == mf || mf.isEmpty() || null == mf.getInputStream() || mf.getSize() > 40000000) {
return;
}
ext = Files.getFileExtension(mf.getOriginalFilename());
if(classPath.indexOf("wtpwebapps")!=-1){
path = classPath+ROOT_IMAGES_PICTURE;
}else{
path = classPath+IMAGES_PICTURE;
}
File f = new File(path +"/" + uuid + "." + ext);
Files.createParentDirs(f);
FileCopyUtils.(mf.getBytes(), f);
material.setFilePath(IMAGES_PICTURE + "/" + uuid + "." + ext);
material.setFileName(mf.getOriginalFilename());
} catch (IOException e) {
e.printStackTrace();
}
}
}
因为使用eclipse开发的,所以会是indexof(wtpwebapps),其他的开发工具要看情况。
jsp:
另外img src好像不支持用绝对路径,显示不出来,我也不知道为什么,网络了很多都没说,但是绝对路径应该是不可行的,因为有时需要移植什么的容易出现问题。
[html] view plain
<head>
<title>图片列表</title>
<script language="javascript" src="./resources/js/jquery-1.8.3.js"> </script>
<script language="javascript" src="./resources/js/jquery.validate.min.js"> </script>
<script language="javascript" src="./resources/js/picture/add.js"> </script>
</head>
<body>
<form action = "<c:url value = "/picture/add"></c:url>" method = "post" id="add_form" enctype="multipart/form-data">
<table class="tab01">
<tr>
<td class="name">名称:</td>
<td><input id = "name" type="text" class="text_input" name="title" placeholder="标题"/></td>
<td><label for="title" class="error" generated="true" style="color:red;font-size:12px;"></label></td>
</tr>
<tr>
<td class="name">上传图片:</td>
<td><input type="file" class="text_input" name="file" id="file" placeholder="上传图片"/></td>
<td><label for="file" class="error" generated="true" style="color:red;font-size:12px;"></label></td>
</tr>
<tr>
<td> </td>
<td colspan="2">
<input type="submit" class="button" id="submitButton" value="提交" name="reset" />
<input type="reset" class="button" value="重置" name="reset" />
</td>
</tr>
</table>
</form>
<br/><br/><br/>
<c:forEach items = "${pictureList }" var = "picture">
<p>${picture.title }</p>
<div><img src="${picture.filePath }" width = "500" height = "500" BORDER="0" ALT="无图片"/>
</div>
</c:forEach>
</body>
[javascript] view plain
$(function(){
jQuery.validator.messages.required = "<span class='error' generated='true' style='color: red; font-size: 12px;'>*请填写此内容</span>";
jQuery.validator.messages.maxlength = "<span class='error' generated='true' style='color: red; font-size: 12px;'>*已达到最大字符数 </span>";
jQuery.validator.messages.accept = "<span class='error' generated='true' style='color: red; font-size: 12px;'>*请输入拥有合法后缀名的字符串 </span>";
$("#add_form").validate({
rules : {
title : {required : true, maxlength :200 },
file : {required : true}
}
});
$("input[type='file']").change(function(){
alert(this.files[0].size);
if(this.files[0].size>300*1024){
alert("图片太大!!图片不大于300KB");
$("#submitButton").attr("disabled","disabled");
}else{
$("#submitButton").removeAttr("disabled");
}
});
$("#add_form").submit(function() {
var filepath=$("input[name='file']").val();
var extStart=filepath.lastIndexOf(".");
var ext=filepath.substring(extStart,filepath.length).toUpperCase();
if(ext!=".BMP"&&ext!=".PNG"&&ext!=".GIF"&&ext!=".JPG"&&ext!=".JPEG"){
alert("图片限于bmp,png,gif,jpeg,jpg格式");
return false;
}
return true;
});
});
J. android开发:怎样实现上传文件到Tomcat服务器上,求可执行的代码,越简洁越好
服务器端写个servlet,然后在doPost()方法里处理客户端上传的文件,大概代码:
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024 * 1024); // 设置最多只允许在内存中存储的数据, 单位:字节
factory.setRepository(cachepath); // 设置一旦文件大小超过设定值时数据存放的目录
ServletFileUpload srvFileUpload = new ServletFileUpload(factory);
srvFileUpload.setSizeMax(1024 * 1024 * 1024); // 设置允许用户上传文件大小, 单位:字节
// 开始读取上传信息
List fileItems = null;
try {
fileItems = srvFileUpload.parseRequest(request);
} catch (Exception e) {
System.out.println("获取上传信息。。。。。。失败");
}
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next(); // 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
// 取出文件域的所有表单信息
} else {
// 取出不是文件域的所有表单信息
}
}