当前位置:首页>开发>正文

java中怎样上传文件 java文件上传下载的具体代码

2023-07-22 19:21:29 互联网 未知 开发

 java中怎样上传文件 java文件上传下载的具体代码

java中怎样上传文件

分真少。。。
public static int transFile(InputStream in, OutputStream out, int fileSize) {
int receiveLen = 0
final int bufSize = 1000
try {
byte[] buf = new byte[bufSize]
int len = 0
while(fileSize - receiveLen > bufSize)
{
len = in.read(buf)
out.write(buf, 0, len)
out.flush()
receiveLen = len
System.out.println(len)
}
while(receiveLen < fileSize)
{
len = in.read(buf, 0, fileSize - receiveLen)
System.out.println(len)
out.write(buf, 0, len)
receiveLen = len
out.flush()
}
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace()
}
return receiveLen
}
这个方法从InputStream中读取内容,写到OutputStream中。
那么发送文件方,InputStream就是FileInputStream,OutputStream就是Socket.getOutputStream.
接受文件方,InputStream就是Socket.getInputStream,OutputStream就是FileOutputStream。
就OK了。 至于存到数据库里嘛,Oracle里用Blob。搜索一下,也是一样的。从Blob能获取一个输出流。

java文件上传下载的具体代码

/**
     * 从FTP文件服务器上下载文件SourceFileName,到本地destinationFileName 所有的文件名中都要求包括完整的路径名在内
     */
    public void downFile(String SourceFileName, String destinationFileName)
            throws Exception {
        connectServer()
        ftpClient.binary() // 一定要使用二进制模式
        TelnetInputStream ftpIn = ftpClient.get(SourceFileName)
        byte[] buf = new byte[204800]
        int bufsize = 0
        FileOutputStream ftpOut = new FileOutputStream(destinationFileName)
        while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {
            ftpOut.write(buf, 0, bufsize)
        }
        ftpOut.close()
        ftpIn.close()
    }

用java实现上传功能

下面是我用过的一段代码,fileupload、servlet搞的

DiskFileItemFactory factory = new DiskFileItemFactory()//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
factory.setSizeThreshold(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD)
ServletFileUpload upload = new ServletFileUpload(factory)
upload.setSizeMax(-1)
upload.setHeaderEncoding("UTF-8")
List items//对应jsp表单的域
File icon = null//这是我要保存的文件,是一个icon
try {
items = upload.parseRequest(request)//通过request获得请求表单的域
if(items!=null&&items.size()>0){
Iterator itr = items.iterator()
while(itr.hasNext()){
FileItem item = (FileItem) itr.next()
if(item.isFormField()){
//普通表单域
String fieldName = item.getFieldName()//表单域的name属性
String value = item.getString("UTF-8")//表单域的value或者textarea的内容
if("news.title".equals(fieldName)){
news.setTitle(value)
}
...
}else{
//如果不是普通的表单域,即文本域
String fieldName = item.getFieldName()//文本域的name属性
String value = item.getName()//文件名
if("icon".equals(fieldName)){
if(!StringUtils.isEmpty(value)){
String filename = String.valueOf(UUID.randomUUID())
new File(WinWinConstant.file_path File.separatorChar WinWinConstant.NEWS).mkdirs()
//设置icon保存的路径
icon = new File(WinWinConstant.file_path File.separatorChar WinWinConstant.NEWS File.separatorChar filename value.substring(value.lastIndexOf(.)))
item.write(icon)//保存文件
}
}
...

}
}
}
}catch(Exception e){
e.printStackTrace()
}

怎么样用JAVA 实现文件的上传下载?

如果不涉及到数据库的话,用简单的IO流即可实现。上传的时候你指定好文件路径或相对路径,把上传内容写进一个生成的文件。下载的时候你去搜下要下载的文件名,把该文件的内容读出来。
如果涉及数据库的话你可以这样做,用hibernate框架的情况下,你可以定义一个实体,实体里含有要下载的文件的标题,内容,这个文件储存的路径等字段。上传的时候将文件读出来并赋值给这些字段,然后存到数据库中,并且将内容,标题等写成String的类型存储到数据库中,下载的时候你可以去数据库中搜这个路径,存在即可把数据库里的内容,标题等读到本地的盘上并生成个文件即可。

java 实现sftp上传文件 都有哪些方式

JSch支持三种文件传输模式:

OVERWRITE 完全覆盖模式,这是JSch的默认文件传输模式,即如果目标文件已经存在,传输的文件将完全覆盖目标文件,产生新的文件。
RESUME
恢复模式,如果文件已经传输一部分,这时由于网络或其他任何原因导致文件传输中断,如果下一次传输相同的文件,

则会从上一次中断的地方续传。

APPEND 追加模式,如果目标文件已存在,传输的文件将在目标文件后追加。

最新文章