1.使用FileInputStream类建立文件输入流,以便从本地文件系统读取文件;
2.使用URL类建立HTTP连接,设置HTTP连接属性,包括访问权限等;
3.使用URLConnection类建立HTTP请求,将文件数据写入输出流;
4.关闭HTTP连接,使文件上传至夭翼云盘。
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代码实现文件上传
FormFile file=manform.getFile()String newfileName = null
String newpathname=null
String fileAddre="/numUp"
try {
InputStream stream = file.getInputStream()// 把文件读入
String filePath = request.getRealPath(fileAddre)//取系统当前路径
File file1 = new File(filePath)//添加了自动创建目录的功能
((File) file1).mkdir()
newfileName = System.currentTimeMillis()
+ file.getFileName().substring(
file.getFileName().lastIndexOf('.'))
ByteArrayOutputStream baos = new ByteArrayOutputStream()
OutputStream bos = new FileOutputStream(filePath + "/"
+ newfileName)
newpathname=filePath+"/"+newfileName
System.out.println(newpathname)
// 建立一个上传文件的输出流
System.out.println(filePath+"/"+file.getFileName())
int bytesRead = 0
byte[] buffer = new byte[8192]
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead)// 将文件写入服务器
}
bos.close()
stream.close()
} catch (FileNotFoundException e) {
e.printStackTrace()
} catch (IOException e) {
e.printStackTrace()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)