导航:首页 > IDC知识 > java上传zip到服务器

java上传zip到服务器

发布时间:2021-03-25 17:11:39

1、JAVA 把文件传到服务器.......

文件上传到A以后 放到服务器上面 然后他就有一个绝对的访问路径 也就是对应一个绝对的url 这样就好办了
Java提供了对URL访问和大量的流操作的的API,可以很容易的完成对网络上资源的存取,下面的代码段就完成了对一个网站的资源进行访问:

......
destUrl="http://www.yourweb.com/java/Afile.zip";
//假设你把文件放到webroot底下的java文件里面
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
//连接指定的网络资源
httpUrl.connect();
//获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
......

得到流后下面你自己想怎么操作就怎么操作了

对于怎么得到资源的连接地址这个方法很多 你可以专门提供一个Servlet 获取到输出的流后 Response.write转门提供服务器已上传的文件 文件名可以一天位单位返回
客户端用与上面同样的方法得到文件名后 拆分 然后再继续循环调用上面的方法 下载文件就ok了

呵呵 希望可以帮助到你

2、JAVA如何把本地文件上传到服务器。

如果抄服务器开通了ftp服务,你的客户端可以实现一个ftp的客户端,通过ftp服务将文件上传到服务器的指定目录下,可以使用org.apache.commons.net.ftp.FTPClient这个类去实现,非常的简单,网上有很多现成的代码可以用

3、java怎么把文件传输到服务器

String realpath = ServletActionContext.getServletContext().getRealPath("/upload") ;//获取服务器路径
String[] targetFileName = uploadFileName;
for (int i = 0; i < upload.length; i++) {
File target = new File(realpath, targetFileName[i]);
FileUtils.copyFile(upload[i], target);
//这是一个文件复制类copyFile()里面就是IO操作,如回果你不用这个类也可以自己答写一个IO复制文件的类
}

其中private File[] upload;// 实际上传文件

private String[] uploadContentType; // 文件的内容类型

private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

4、java中怎么把文件上传到服务器的指定路径

String realpath = ServletActionContext.getServletContext().getRealPath("/upload") ;//获取服务器路径
String[] targetFileName = uploadFileName;
for (int i = 0; i < upload.length; i++) {
File target = new File(realpath, targetFileName[i]);
FileUtils.copyFile(upload[i], target);
//这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类
}

其中private File[] upload;// 实际上传文件

private String[] uploadContentType; // 文件的内容类型

private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

5、java服务器如何对zip文件分包上传?

这个你是用什么客户端上传呢?

java写的客户端和H5页面都可以做这个操作,思路都是一样的。

把文件切割再上传,后台接受结束后再把文件合并。

在DB里做个记录就是断点续传了嘛。

给点代码提示:

js:

每次上传2M,必须是支持H5的浏览器才行,兼容的问题需要注意!

function calculate(file,callBack){

    var fileReader = new FileReader(),    
        blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice,    
        chunkSize = 2097152,    
        // read in chunks of 2MB
        chunks = Math.ceil(file.size / chunkSize),    
        currentChunk = 0,    
        spark = new SparkMD5();    
    
    fileReader.onload = function(e) {    
        spark.appendBinary(e.target.result); // append binary string
        currentChunk++;    
    
        if (currentChunk < chunks) {    
            loadNext();    
        }    
        else {    
            callBack(spark.end());  
        }    
    };    
    
    function loadNext() {    
        var start = currentChunk * chunkSize,    
            end = start + chunkSize >= file.size ? file.size : start + chunkSize;    
    
        fileReader.readAsBinaryString(blobSlice.call(file, start, end));    
    };    
    
    loadNext();    
}

java代码没什么注释,也不是全部的代码看个大概意思,理解一下吧

根据文件的MD5码来判断每次上传的文件是不是上传过的。

如果是就找到上次的点告诉前台从哪开始上传。

Message message = new Message();
PrintWriter out = response.getWriter();
ServiceBreakpointUpload service = new ServiceBreakpointUpload();
BreakpointShard shard = new BreakpointShard();

String currentShardIndex = "";
String totalShard = "";
String fileMD5 = "";
String fileName = "";
String fileType = "other";
try {
fileMD5 = request.getParameter("fileMD5");
Part part = request.getPart("fileData");
currentShardIndex = request.getParameter("currentShardIndex");
totalShard = request.getParameter("totalShard");
fileName = request.getParameter("fileName");
fileName = new String(fileName.getBytes("iso-8859-1"),"UTF-8");
fileType = request.getParameter("fileType");
String typeFolderName = service.getTypeFolder(fileType);
String folderPath = getServletContext().getRealPath("/upload/") + typeFolderName + File.separator;
String path = folderPath + fileName + "-" + fileMD5 + "-" + currentShardIndex;
System.out.println("fileName:"+fileName);
// 是否初次上传
if (!service.isUpload(fileMD5,fileType)) {
BreakpointFile breakpointFile = new BreakpointFile();
breakpointFile.setMd5(fileMD5);
breakpointFile.setFile_name(fileName);
breakpointFile.setTotal_shard(totalShard);
breakpointFile.setCurrent_shard_index(currentShardIndex);
breakpointFile.setFile_type(fileType);
breakpointFile.setPath(folderPath);
service.saveFile(breakpointFile);
} else {// 返回上次完成位置
service.updateFile(fileMD5, currentShardIndex,fileType);
System.out.println("upload shard "+currentShardIndex+" OK");
}
shard.setMd5(fileMD5);
shard.setShard_index(currentShardIndex);
shard.setPath(path);
service.saveShardFile(shard);
part.write(path);
if (currentShardIndex.equals(totalShard)) {// 上传完成
System.out.println("upload File finsh start merge shard");
service.mergeFiles(fileMD5,fileType);
System.out.println("merge shard OK");
message.setData("completed");
}
message.setData(currentShardIndex);
out.println(JSONObject.fromObject(message).toString());
} catch (Exception e) {
e.printStackTrace();
message.setHasError(true);
message.setErrorMessage("错误!");
out.println(JSONObject.fromObject(message).toString());
}
}

6、java客户端怎么把本地的文件上传到服务器

String realpath = ServletActionContext.getServletContext().getRealPath("/upload") ;//获取服务器路径
String[] targetFileName = uploadFileName;
for (int i = 0; i < upload.length; i++) {
File target = new File(realpath, targetFileName[i]);
FileUtils.copyFile(upload[i], target);
//这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类
}

其中private File[] upload;// 实际上传文件

private String[] uploadContentType; // 文件的内容类型

private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

7、java怎么实现上传文件到服务器

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<ERRORTYPE.LENGTH;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);

 }

 

}

}

现在介绍上传文件到服务器,下面只写出相关代码:

以sql2000为例,表结构如下:

字段名:name  filecode

类型: varchar image

数据库插入代码为:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");

代码如下:

。。。。。。

try{

这段代码如果不去掉,将一同写入到服务器中

//item.write(new File("d://" + m.group(1)));

 

int byteread=0;

//读取输入流,也就是上传的文件内容

InputStream inStream=item.getInputStream();  

pstmt.setString(1,m.group(1));

pstmt.setBinaryStream(2,inStream,(int)size);

pstmt.executeUpdate();

inStream.close();

out.println(name+"  "+size+" ");

}

。。。。。。

这样就实现了上传文件至数据库

8、java如何解压页面上传到服务器的zip文件

这个转换肯定是会出错的,struts 的formFile跟zipFile没有直接关系,怎么能这么强制转化呢?专
建议
1. 把文件保存到一个属临时目录(保存为zip文件)
2. 读取这个文件
3. 抽取想要的文件
4. 把临时文件删除

9、java怎么把.zip文件上传到另外的文件服务器

这个转换肯定是会出错的,struts 的formFile跟zipFile没有直接关系,怎么能这么强制转化呢?
建议
1. 把文件保存到一个临时目录(保存为zip文件)
2. 读取这个文件
3. 抽取想要的文件
4. 把临时文件删除

与java上传zip到服务器相关的知识