javaweb实现文件上传
⑴ javaweb实现图片上传(java中图片文件上传怎么实现)
用java怎么上传图片到项目指定的文件夹privateFilemyFile;//文件;//类型privateStringmyFileFileName;//文件名//。。
//使用formfile.getInputStream()来获取一个文件的输入流进行保存。
你使用的那个上传组件啊?struts2默认提供的那个?common-file-upload?要是使用的是struts使用域驱动模式在文件名上使用*File就行啊,然后你径读取就行了啊。
javaWeb如何实现想QQ空间图片预览的效果以及图片批量上传?最好有...
引入资源使用WebUploader文件上传需要引入三种资源:JS,CSS,SWF。
JAVAWEB文件上传步骤如下:实现Web开发中的文件上传功能,两个操作:在Web页面添加上传输入项,在Servlet中读取上传文件的数据并保存在本地硬盘中。Web端上传文件。
首先,打开自己的空间,看到导航栏上的相册,点击进入然后选择上传图片,如果你还没有创建过相册,那先点击新建相册,建立一个相册。然后就可以上传图片了,首先先说单张图片的上传。
javaWEB项目中如何实现批量选择文件并上传呢?有什么好的插件,最好有...1)开发一个web插件。用于上传文件。2)开发一个ftp工具,不用web上传。3)用现有的FTP工具。下面是几款不错的插件,你可以试试:1)Jquery的uploadify插件。具体使用。你可以看帮助文档。
1:点击自定义。2:点击右侧的新建模块→点击图片模块。3:模块名称随便,用一个空格最好,图片地址上输入图片的地址,再点击“更多设置”,只设置图片的宽高度(以图片的大小而定)就可以了,背景、边框选择无,确定保存。
据我的能力理解不太能同时实现。我讲下我的实现思路:1,你有一台作为接收,文件上传至此,得到file1;2,file1,输出到另一台机器建议采用(ftp协议),至于是同步还是异步执行无关紧要。3,其他逻辑。
javaweb实现自动上传的功能,就是不用input的上传,只知道文件的全路径名...代码是在客户端运行的,你直接用newfile然后输出流写在服务器的路径里面不就可以了吗!服务器路径就是加ip的那种。
Web端上传文件。在Web页面中添加上传输入项:inputtype=file设置文件上传输入项时应注意:(1)必须设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。
必须设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。
java,web项目我想上传一个rar压缩文件,里面有个excel和图片。1、你要找不同文件的时候,如果文件比较少,像你说的只有两个文件,你就按扩展名去判断匹配就可以了。excel找xls,图片找jpg或者png。
2、导出压缩包压缩包里有excel和照片解决方法如下:先需要将Excel另存为网页。这时就会生成一个文件夹,里面存放着全部图片。更改Excel的后缀,变成压缩文件,rar或者zip格式都可以。
3、要正确的将Web客户端的Excel文件导入到服务器的数据库中,需要将客户端的Excel文件上传到服务器上。可以使用FileUpload控件完成。Excel文件上传到服务器指定的目录中,这里假设是该站点的upfiles目录中。
4、这个现在好像实现不了,以前也找过资料。没有找到……,现在的思路是把rar改成图片格式可以试试啊。
怎样使用javaweb实现上传视频和下载功能?那上传视频就和普通的文件上传一样。都是通过Http上传。前端可以使用form表单上传也可以使用ajax异步上传。后台可以使用apache的Common-fileUpload工具来解析并保存文件。然后生成一个访问路径。
直接把大文件读取为IO流,之后进行上传下载即可,不用担心文件大,是可以分流下载上传的(setBufferSize(1024))。
下载简单,无非是把服务器上的文件或者数据库中的BLob(或其他二进制型),用流读出来,然后写到客户端即可,要注意ContentType。
java上传可以使用common-fileupload上传组件的。
⑵ 怎样使用javaweb实现上传视频和下载功能
文件上传就是将客户端资源,通过网路传递到服务器端。
因为文件数据比较大,必须通过文件上传才可以完成将数据保存到数据库端的操作。
文件上传的本质就是IO流操作。
演示:文件上传应该如何操作?
浏览器端:
1.method=post 只有post才可以携带大数据
2.必须使用<input type='file' name='f'>要有name属性
3.encType="multipart/form-data"
服务器端:
request对象是用于获取请求信息。
它有一个方法 getInputStream(); 可以获取一个字节输入流,通过这个流,可以读取到
所有的请求正文信息.
文件上传原理:
浏览器端注意上述三件事,在服务器端通过流将数据读取到,在对数据进行解析.
将上传文件内容得到,保存在服务器端,就完成了文件上传。
注意:在实际开发中,不需要我们进行数据解析,完成文件上传。因为我们会使用文件上传的工具,它们已经封装好的,提供API,只要调用它们的API就可以完成文件上传操作.我们使用的commons-fileupload,它是apache提供的一套开源免费的文件上传工具。
代码演示文件上传的原理:
在WebRoot下新建upload1.jsp
[html]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<title>MyJSP'index.jsp'startingpage</title>
</head>
<body>
<!--encType默认是application/x-www-form-urlencoded-->
<formaction="${pageContext.request.contextPath}/upload1"
method="POST"enctype="multipart/form-data">
<inputtype="text"name="content"><br>
<inputtype="file"name="f"><br><inputtype="submit"
value="上传">
</form>
</body>
</html>
packagecn.itcast.web.servlet;
importjava.io.IOException;
importjava.io.InputStream;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//System.out.println("upload1servlet......");
//通过request获取一个字节输入流,将所有的请求正文信息读取到,打印到控制台
InputStreamis=request.getInputStream();
byte[]b=newbyte[1024];
intlen=-1;
while((len=is.read(b))!=-1){
System.out.println(newString(b,0,len));
}
is.close();
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
在web页面中添加上传输入项。
在Servlet中读取上传文件的数据,并保存在服务器硬盘中。
1、必须设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。
2、必须把form的encType属性设为multipart/form-data 设置该值后,浏览器在上传文件时,并把文件数据附带在http请求消息体内,并使用MIME协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理。
3、表单的提交方式要设置为post。
Request对象提供了一个getInputStream方法,通过这个方法可以读取到客户端提交过来的数据。但由于用户可能会同时上传多个文件,在servlet端编程直接读取上传数据,并分别解析出相应的文件数据是一项非常麻烦的工作,示例。
为方便用户处理文件上传数据,Apache 开源组织提供了一个用来处理表单文件上传的一个开源组件( Commons-fileupload ),该组件性能优异,并且其API使用极其简单,可以让开发人员轻松实现web文件上传功能,因此在web开发中实现文件上传功能,通常使用Commons-fileupload组件实现。
使用Commons-fileupload组件实现文件上传,需要导入该组件相应支撑jar包:Commons-fileupload和commons-io。commo-io不属于文件上传组件的开发jar文件,但Commons-fileupload组件从1.1版本开始,它工作时需要commons-io包的支持。
新建Upload1Servlet 路径:/upload1
[java]view plain
在浏览器端访问信息如下:
文件上传概述
实现web开发中的文件上传功能,需要完成如下二步操作:
如何在web页面中添加上传输入项?
<input type="file">标签用于在web页面中添加文件上传输入项,设置文件上传输入项时注意:
如何在Servlet中读取文件上传数据,并保存到本地硬盘中?
⑶ javaWeb能和ftp实现大文件上传吗
java上传可以使用common-fileupload上传组件的。common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件下面先介绍上传文件到服务器(多文件上传):import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;
public class upload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
try {
DiskFileUpload fu = new DiskFileUpload();
// 设置允许用户上传文件大小,单位:字节,这里设为2m
fu.setSizeMax(2*1024*1024);
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath("c:\\windows\\temp");
//开始读取上传信息
List fileItems = fu.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();//正则匹配,过滤路径取文件名
String regExp=".+\\\\(.+)$";//过滤掉的文件类型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{//保存上传的文件到指定的目录//在下文中上传文件至数据库时,将对这里改写
item.write(new File("d:\\" + m.group(1))); out.print(name+" "+size+"
");
}
catch(Exception e){
out.println(e);
} }
else
{
throw new IOException("fail to upload");
}
}
}
}
catch (IOException e){
out.println(e);
}
catch (FileUploadException e){
out.println(e);
}
}
}
⑷ java上传文件到服务器java实现文件上传的三种方式
一、需求
在项目开发中,遇到需要将页面上的文件上传至本地保存,之后这个上传的文件还能进行访问,后台是Spring Boot框架搭建的,只需将文件上传至Spring Boot项目编译之后的classes\static\文件夹中即可。如下图:
二、文件上传
1、 定义文件上传接口方法
// 在pom.xml引入spring-boot-starter-web依赖,即可导包import org.springframework.web.multipart.MultipartFile;// fileRoot:上传文件保存的根路径String upload(MultipartFile file, String fileRoot) throws IOException;2、文件上传接口方法实现
@Overridepublic String upload(MultipartFile file, String fileRoot) throws IOException { prepareFilePath(fileRoot); // 获取上传文件的原文件名 String fileName = file.getOriginalFilename(); // 规则化之后的文件上传根路径 String normalizeFileRoot = getNormalizeFileRoot(fileRoot); // 根据路径和文件名创建目标文件 File targetFile = new File(normalizeFileRoot, fileName); // 如果目标文件存在,删除 if (targetFile.exists()) targetFile.delete(); // 将目标文件进行转移 file.transferTo(targetFile); return String.format("%s\\%s", normalizeFileRoot, fileName);}/** fileRoot:上传文件保存的根路径 此方法是准备文件上传的路径,如果路径不存在,即创建*/private void prepareFilePath(String fileRoot) { File file = new File(Helper.normalizePath(fileRoot)); if (!file.exists()) file.mkdirs();}/** 该方法主要对文件路径进行规则化,如:D:\\\360Browser\///360Chrome\\//, 像这种路径就不正确,此方法可以将路径规则化为:D:\360Browser\360Chrome*/private String getNormalizeFileRoot(String fileRoot) { return Helper.normalizePath(fileRoot);}Helper工具类中的路径规则化方法
public static String normalizePath(String path) { String result = path.replaceAll("/+", Matcher.quoteReplacement(File.separator)); return result.replaceAll("\\\\+", Matcher.quoteReplacement(File.separator));}3、Controller
@PostMapping("/upload")public RequestResult upload(@RequestParam("file") MultipartFile file) throws IOException { Config config = configService.get("Upload", "FileRoot"); String filePath = busService.upload(file, config.getValue()); return RequestResult.success(filePath);}三、测试
1、 使用Postman进行文件上传测试
2、 在浏览器中输入定位文件.doc,可以将文件下载到本地
⑸ java上传文件后用户是如何访问的(java实现文件上传的三种方式)
JAVA把文件传到服务器.......文件上传到A以后放到服务器上面然后他就有一个绝对的访问路径也就是对应一个绝对的url这样就好办了
Java提供了对URL访问和大量的流操作的的API,可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:
......
destUrl="";
//假设你把文件放到webroot底下的java文件里面
url=newURL(destUrl);
httpUrl=(HttpURLConnection)url.openConnection();
//连接指定的网络资源
httpUrl.connect();
//获取网络输入流
bis=newBufferedInputStream(httpUrl.getInputStream());
......
得到流后下面你自己想怎么操作就怎么操作了
对于怎么得到资源的连接地址这个方法很多你可以专门提供一个Servlet获取到输出的流后Response.write转门提供服务器已上传的文件文件名可以一天位单位返回
客户端用与上面同样的方法得到文件名后拆分然后再继续循环调用上面的方法下载文件就ok了
呵呵希望可以帮助到你
如何通过Java客户端程序通过rest接口访问并上传文件(文档)到web服务器?图片目录不在项目路径下,直接通过HTTP访问不到,如果你硬是要这么访问,你可以自己写一个Servlet,通过流的方式输出,注意要吧Content-Type设置正确
java上传成功后怎么触发其他操作javaget方式异步上传_简述Java异步上传文件的三种方式原创
2021-02-1316:31:03
yibbbian
码龄4年
关注
本文为大家分享了三种Java异步上传文件方式,供大家参考,具体内容如下
用第三方控件,如Flash,ActiveX等浏览器插件上传。
使用隐藏的iframe模拟异步上传。
使用XMLHttpRequest2来实现异步上传。
第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我就不讲了,以免误人子弟,提出这点大家可以自行网络。
第二种使用隐藏的iframe模拟异步上传。为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使当前页面跳转,感觉就像是异步操作一样。
隐藏的iframe上传文件
附件:
正在上传...
//上传完成后的回调
functionuploadFinished(fileName){
addToFlist(fileName);
loading(false);
}
functionaddToFlist(fname){
vartemp=["
",
fname,
"删除",
"
"
];
$("#flist").append(temp.join(""));
}
functionloading(showloading){
if(showloading){
$("#uptxt").show();
}else{
$("#uptxt").hide;
}
}
这种技术有两个关键的地方:
1.form会指定target,提交的结果定向返回到隐藏的ifram中。(即form的target与iframe的name属性一致)。
2.提交完成后,iframe中页面与主页面通信,通知上传结果及服务端文件信息
如何与主页面通信呢?
我们用nodejs在接收完了文件后返回了一个window.parent.主页面定义的方法,执行后可以得知文件上传完成。代码很简单:
router.post('/upload2',multipartMiddleware,function(req,res){
varfpath=req.files.myfile.path;
varfname=fpath.substr(fpath.lastIndexOf('\')+1);
setTimeout(function{
varret=["
"window.parent.uploadFinished('"+fname+"');",
""];
res.send(ret.join(""));
},3000);
});
执行后可以打开开发人员选项,你会发现隐藏iframe中返回了服务器的一些数据。
第三种使用XMLHttpRequest2来进行真正的异步上传。
还是先贴出代码:
执行后可以打开开发人员选项,你会发现隐藏iframe中返回了服务器的一些数据。第三种使用XMLHttpRequest2来进行真正的异步上传。还是先贴出代码:
xhrlevel2异步上传
附件:
正在上传...
停止上传
functionupload{
//1.准备FormData
varfd=newFormData;
fd.append("myfile",$("#myfile")[0].files[0]);
//创建xhr对象
varxhr=newXMLHttpRequest;
//监听状态,实时响应
//xhr和xhr.upload都有progress事件,xhr.progress是下载进度,xhr.upload.progress是上传进度
xhr.upload.onprogress=function(event){
if(event.lengthComputable){
varpercent=Math.round(event.loaded*100/event.total);
console.log('%d%',percent);
$("#upprog").text(percent);
}
};
//传输开始事件
xhr.onloadstart=function(event){
console.log('loadstart');
$("#upprog").text('开始上传');
$("#stopbtn").one('click',function{xhr.abort;$(this).hide();});
loading(true);
};
//ajax过程成功完成事件
xhr.onload=function(event){
console.log('loadsuccess');
$("#upprog").text('上传成功');
console.log(xhr.responseText);
varret=JSON.parse(xhr.responseText);
addToFlist(ret.fname);
};
//ajax过程发生错误事件
xhr.onerror=function(event){
console.log('error');
$("#upprog").text('发生错误');
};
//ajax被取消
xhr.onabort=function(event){
console.log('abort');
$("#upprog").text('操作被取消');
};
//loadend传输结束,不管成功失败都会被触发
xhr.onloadend=function(event){
console.log('loadend');
loading(false);
};
//发起ajax请求传送数据
xhr.open('POST','/upload3',true);
xhr.send(fd);
}
functionaddToFlist(fname){
vartemp=["
",
fname,
"删除",
"
"
];
$("#flist").append(temp.join(""));
}
functiondelFile(fname){
console.log('todeletefile:'+fname);
//TODO:请实现
}
functionloading(showloading){
if(showloading){
$("#uptxt").show();
$("#stopbtn").show();
}else{
$("#uptxt").hide();
$("#stopbtn").hide();
}
}
代码有点多,但是通俗易懂。使用过AJAX的人都知道,XHR对象提供了一个onreadystatechange的回调方法来监听整个请求/响应过程。在XMLHttpRequest2级规范中又多了几个进度事件。有以下6个事件:
1.loadstart:在接收到响应数据的第一个字节时触发。
2.progress:在接收响应期间持续不断地触发。
3.error:在请求发生错误时触发。
4.abort:在因为调用abort方法而终止连接时触发。
5.load:在接收到完整的响应数据时触发。
6.loadend:在通信完成或者触发error,abort,load事件后触发。
这次我们可以解读代码:当传输事件开始后,我们便在停止传送按钮上添加点击事件,内置了abort方法可以停止传送。若不点则会正常上传直到传送完毕为止。其后台代码类似第二种方法。
三种方法各有优劣,做个简单的小结吧。
第三方控件交互性和可控性好,因为接近底层,其性能也是很优秀的。但是由于编写难度大通常需要自己安装插件,有时可能需要自己进行编写。
隐藏的iframe方法我个人觉得是非常有思想的一个方法,iframe可以帮我们做很多事。这种方式具有广泛的浏览器兼容性而且不需要安装插件。但是它交互性差,上传过程不可控,而且性能也是很一般的。
XHR2级的纯ajax上传,它必须要版本比较高一点的浏览器(ie9+)。但是它交互性特别好,可以看到上传进度并且是可控的。
java如何访问局域网共享文件?
java访问共享文件夹,读取局域网中一台机器的共享目录中的文件,需要jcifs-1.1.11.jar的支持,使用SMB协议,以下是实现了远程读取文件的功能代码:
package?junit;
import?jcifs.smb.SmbFile;
/**???
?*?java访问局域网共享目录
?*
?*?@author?administrator
?*?@version?1.0?2015-7-6?
?*/
public?class?SmbTest?{
????public?static?void?main(String[]?args)?throws?Exception?{
????????//smb://xxx:[email protected]/testIndex/??
????????//xxx:xxx是共享机器的用户名密码
????????String?url="smb://192.168.2.188/testIndex/";
????????SmbFile?file?=?new?SmbFile(url);
????????if(file.exists()){
????????????SmbFile[]?files?=?file.listFiles();
????????????for(SmbFile?f?:?files){
????????????????System.out.println(f.getName());
????????????}
????????}
????}
}
java文件上传后,一般怎么和用户挂钩呢?第一个问题,如果有单独的文件服务器,上传的每一个文件有一个唯一的id,{id,filePath},id与用户关联即可.
第二个问题,可以一组文件分配一个id,表示这些文件是一个组的,id与用户关联.