资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

上传小说代码java 写小说上传

想要用java做一个小说网站,书籍的更新问题。前辈请指点下。

这个很简单的,不是什么问题。但是,重点是,你的小说是什么格式。咱们以最常见的txt格式为例来讨论这个问题。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名网站空间、营销软件、网站建设、黄岩网站维护、网站推广。

1.数据库里应该设计“小说”表,存储每一本“小说”的信息。而这个表里,需要有小说的id,名称,作者等信息,而对应的,还需要有一个小说存储的地址信息,这个地址,就是小说在你服务端的地址,即你服务器硬盘上的存储路径。

2.客户在读小说时,客户端发送请求,服务端接收了客户请求,通过请求数据库,找到每本“小说”的在服务器硬盘上的地址,然后可以选择将字符串读取出来传送回客户端,或者直接把地址告诉客户端让用户进行下载。

3.明白了这个设计,更新也很简单。更新时,首先需要将小说上传至服务端硬盘;然后更新数据库,将小说的各种信息,包括存储地址,维护进数据库(这一步可以专门做一个管理页面进行维护),这样一本新的小说就更新完成了。

4.以上是大体的设计实现思路,你可以根据你的实际情况看下是否可行。

java 文件上传的代码,尽量详细一点。。。

// 这是我写的一个方法,里面只需要传两个参数就OK了,在任何地方调用此方法都可以文件上传

/**

* 上传文件

* @param file待上传的文件

* @param storePath待存储的路径(该路径还包括文件名)

*/

public void uploadFormFile(FormFile file,String storePath)throws Exception{

// 开始上传

InputStream is =null;

OutputStream os =null;

try {

is = file.getInputStream();

os = new FileOutputStream(storePath);

int bytes = 0;

byte[] buffer = new byte[8192];

while ((bytes = is.read(buffer, 0, 8192)) != -1) {

os.write(buffer, 0, bytes);

}

os.close();

is.close();

} catch (Exception e) {

throw e;

}

finally{

if(os!=null){

try{

os.close();

os=null;

}catch(Exception e1){

;

}

}

if(is!=null){

try{

is.close();

is=null;

}catch(Exception e1){

;

}

}

}

}

JAVA编写一个具有登陆,注册,上传,下载功能的TXT小说管理器

不能使用数据库,直接使用xml就行了。什么叫验证注册功能不会?读取XML,看看有没有改用户,如果有就去除该用户,然后对比密码就行了。建议一开始就解析XML,变成一个map数据,key放用户,密码为value,把map放到application域中,然后验证的时候直接取出map就行了。

目测就两功能:

1、注册、登陆

2、上传、列表显示、下载。

不明白的是什么叫客户端直接操作服务端的文件?把文件放到WEB-INF文件夹下面就可以保护了,客户端不能直接访问。

求一个能上传小说和图片的网站源码

这是我用的asp的,图片存在UpImages文件下,图片文件存在数库里,别外你自添加数据连接吧;

%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""

html xmlns=""

head

meta http-equiv="Content-Type" content="text/html; charset=gb2312" /

title写日记/title

% if session("user")="" then

response.write"非法操作"

response.end

end if

%

link href="Css.css" rel="stylesheet" type="text/css" /

style type="text/css"

!--

td { font-size: 12px; line-height: 18px; border-style: none; color: #333333}

body {

background-image: url(image/94d48012f93a637cf819b897.jpg);

}

.STYLE10 {font-size: 10px; font-family: "宋体"; }

.STYLE12 {font-size: 12px; font-family: "楷体_GB2312"; }

--

/style/head

!--#include file="Conn.asp"--

body

table width="800" border="0" align="center" cellspacing="0"

tr

th align="right" scope="col" span class="STYLE12"

script language="JavaScript" type="text/javascript"

var pp,mm,month;

mydate=new Date();

pp=mydate.getDay();

month=mydate.getMonth()+1;

switch(pp)

{case 0: mm="星期日";break;

case 1: mm="星期一";break;

case 2:mm="星期二";break;

case 3: mm="星期三";break;

case 4: mm="星期四" ;break;

case 5 : mm="星期五";break;

case 6 : mm="星期六";break;

}

document.write("今天是:"+mydate.getYear()+"年"+month+"月"+mydate.getDate()

+"日"+"nbsp"+mm+"nbsp");

/script

/span/th

/tr

tr

th height="40" scope="col"img src="image/top.gif" width="800" height="157" alt="书丛制作" //th

/tr

tr

td height="25" align="center" background="image/ph.gif"写文章/td

/tr

/table

table width="800" border="0" align="center" cellpadding="0" cellspacing="0"

tr

td bgcolor="#CCFFFF"form action="write.asp?action=Addnew" method="post" enctype="multipart/form-data" name="form1" id="form1"

table width="800" border="0" cellspacing="0" cellpadding="0"

tr

td width="138" align="right"文章标题:/td

td colspan="2"label

input name="title" type="text" id="title" /

/label/td

/tr

tr

td align="right" /td

td width="236"label/label

label for="file"/label

input type="file" name="file" id="file" //td

td width="426"      心情状态:

select name="select"

option value="一般" selected="selected"一般/option

option value="非常愉快"非常愉快/option

option value="愉快"愉快/option

option value="不好"不好/option

option value="失落"失落/option

/select/td

/tr

tr

td align="right"文章内容:/td

td colspan="2"label

textarea name="content" cols="80" rows="20" id="content"/textarea

/label/td

/tr

tr

td align="right"操作:/td

td colspan="2"label

input type="submit" name="Submit" value="提交" /

/label/td

/tr

/table

/form

/td

/tr

/table

table width="800" border="0" align="center" cellspacing="0"

tr

th height="3" scope="col"hr size="1" //th

/tr

/table

table width="800" border="0" align="center" cellspacing="0"

tr

th align="center" scope="col"span class="STYLE10"Copyright 2009 ? All Rights Reserved.br /

版权所有: | 技术支持:a href="mailto:yaoyaovip@yahoo.com.cn"书丛/a | 渝ICP备000**0号 /span/th

/tr

/table

%

if request("action") = "Addnew" then

newline = chrB(13) chrB(10) 'newline表示二进制的回车符

filesize = Request.TotalBytes 'filesize是表单数据大小

filedata = Request.BinaryRead(filesize) 'filedata是表单的二进制数据

divider = leftB(filedata,clng(instrb(filedata,newline))-1) 'divider是分割符

Set Rs = Server.CreateObject("ADODB.RecordSet")

Sql="Select * From word"

Rs.Open Sql,conn,3,3

Rs.addnew

k = 1

While instrb(k,filedata,divider) instrb((instrb(k,filedata,divider)+lenb(divider)),filedata,divider)

start = instrb(k,filedata,divider) + lenb(divider) +2

endsize = instrb((instrb(k,filedata,divider) + lenb(divider)),filedata,divider) - start - 2

content = midb(filedata,start,endsize) '取文件说明部分

start_name = instrb(content,toByte("name="""))

end_name = instrb(start_name + 6,content,toByte(""""))

nametag = midb(content,start_name+6,end_name-start_name-6) '取文件说明部分中name=""中的内容,即表单元素的名称

pos1_filename = instrb(end_name,content,toByte("filename="""))

'如果是文件框,则文件说明部分应有filename="",那么pos1_filename不等于0

If pos1_filename = 0 Then '表单中不属于文件上传的数据处理

namevalue = toStr(midb(content,end_name+5,lenb(content)-end_name-4)) '取文件内容

' 将文件说明部分的name=""中的内容与表单元素的名称进行比较,把相应的内容加入数据库

If(InStr(toStr(nametag),"file") 0)Then 'CenterID2'为表单控件的name属性值,以下同

Rs("image") = namevalue

session("CenterID") = namevalue '用于上传文件保存时的文件名中

End If

If(InStr(toStr(nametag),"title") 0)Then

Rs("title") = namevalue

if namevalue="" then

Response.Write "Scriptalert('请输入标题!')/Script"

response.end

end if

End If

If(InStr(toStr(nametag),"content") 0)Then

Rs("content") = namevalue

if namevalue="" then

Response.Write "Scriptalert('请输入内容!')/Script"

response.end

end if

End If

If(InStr(toStr(nametag),"select") 0)Then

Set Rs1 = Server.CreateObject("ADODB.RecordSet")

Sql="Select * From mun"

Rs1.Open Sql,conn,3,3

Rs1("mun")=namevalue

Rs1.update

Rs1.Close

Set Rs1=nothing

End If

Rs("wtime") = year(now)"-"month(now)"-"day(now)

'Response.Write (namevalue)

'Response.Write(" br")

else '处理文件上传部分的数据

pos2_filename = instrb(pos1_filename+10,content,toByte(""""))

fullpath = midb(content,pos1_filename+10,pos2_filename-pos1_filename-10) '从文件说明部分中取出文件路径

covername=GetFileName(toStr(fullpath))

If(fullpath "")Then '如果有上传的文件,执行以下代码

dim bStart ' 取二进制流文件部分开始位置

bStart = instrb(start,filedata,newlinenewline)+3

dim bEnd ' 取二进制流文件部分结束位置

bEnd=inStrB(bStart+6,filedata,divider)-bStart-3

dim stm ' 定义一个 adodb.stream 源对象 stm, 用以拷贝二进制流文件部分至另一 adodb.stream fromStm

set stm=createObject("adodb.stream")

stm.type=1 ' 二进制模式

stm.mode=3 ' 指定打开模式为读写

stm.open

stm.write filedata '写入二进制流内容

dim fromStm '定义 adodb.stream 对象 fromStm, 以保存文件

set fromStm=createOBject("adodb.stream")

with fromStm

.type=1

.mode=3

.open

stm.position = bStart ' 指定 stm 对象的起始位置, 以变量 bStart 的值为起始位置

stm.copyTo fromStm, bEnd ' 拷贝 stm 二进制流至 fromStm 对象, 长度为 bEnd 变量的长度

.saveTofile server.MapPath (covername),2' 保存文件, 如果存在相同名称, 则覆盖

.close

end with

set fromStm = nothing

stm.close

set stm = nothing

Rs("image") =covername '将文件的相对路径写入数据库中

end if

end if

k = instrb((instrb(k,filedata,divider)+lenb(divider)),filedata,divider)

Wend

Rs.update

Rs.close

set Rs = nothing

response.Redirect"mylife.asp"

end if

function toStr(Byt) '将二进制转换为字符串

toStr=""

for i=1 to lenb(byt)

blow = midb(byt,i,1)

if ascb(blow)127 then

toStr = toStrchr(ascw(midb(byt,i+1,1)blow)) '

i = i+1

else

toStr = toStrchr(ascb(blow))

end if

Next

End function

Function toByte(Str) '将字符串转换为二进制

dim i,iCode,c,iLow,iHigh

toByte=""

For i=1 To Len(Str)

c=mid(Str,i,1)

iCode =Asc(c)

If iCode 0 Then iCode = iCode + 65535

If iCode255 Then

iLow = Left(Hex(Asc(c)),2)

iHigh =Right(Hex(Asc(c)),2)

toByte = toByte chrB("H"iLow) chrB("H"iHigh)

Else

toByte = toByte chrB(AscB(c))

End If

Next

End function

Function GetFileName(imagespath)'将路径转换为时间,并使上传的文件不重名

If imagespath "" Then

rname=right(toStr(fullpath),len(toStr(fullpath))-InStrRev(toStr(fullpath),".")+1)'获得后缀名

GetFileName = "UpImages/" year(now)month(now)day(now)hour(now)minute(now)second(now)rname

Else

GetFileName =""

End If

End Function

%

/body

/html

有关java的编程问题!自己写了一个TXT小说管理器,可上传,下载,在线阅读的那种。。。

乱码就是编码格式的问题,处理字符串的时候加上编码格式相关的转换就ok了。


网站名称:上传小说代码java 写小说上传
文章网址:http://cdkjz.cn/article/hhgocs.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220