⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1046047.xml

📁 论坛精华帖子
💻 XML
📖 第 1 页 / 共 3 页
字号:
<?xml version='1.0' encoding='GB2312'?>
<?xml-stylesheet type='text/xsl' href='../csdn.xsl'?>
<Topic>
<Issue>
<PostUserNickName></PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>100</credit>
<TopicId>1046047</TopicId>
<TopicName>求文件上传/下载/显示的解决方法</TopicName>
<PostUserId>170689</PostUserId>
<PostUserName>linetsam</PostUserName>
<RoomName>JSP</RoomName>
<ReplyNum>7</ReplyNum>
<PostDateTime>2002-9-23 14:52:14</PostDateTime>
<Point>100</Point>
<ReadNum>0</ReadNum>
<RoomId>28</RoomId>
<EndState>2</EndState>
<Content>想了解文件上传/下载/显示的具体实现方法,并有以下一些要求:
1.&#32;将文件上传到服务器以Blob对象保存到oracle,&#32;直接读取输入流后写进数据库,
&#32;&#32;&#32;不要采取"上传本地文件"-&gt;"在服务器端产生文件"-&gt;"读文件流"-&gt;"写库"的方式.&#32;要求在写进库之前,得到文件的名称,大小,在判断文件是否存在。
&#32;&#32;&#32;
2.&#32;用Servlet实现文件显示。

3.&#32;从数据库读出Blob对象,生成流直接下载到客户端。不要使用
&#32;&#32;&#32;"读取blob对象"-&gt;"在服务器目录下生成下载文件"的方式.&#32;最好在界面上
&#32;&#32;&#32;对文件链接可以"左键显示","右键保存下载".

4.&#32;请不要使用jspsmartupload组件

望大虾们能给出解决的办法.
</Content>
</Issue>
<Replys>
<Reply>
<PostUserNickName>Tom</PostUserNickName>
<rank>五级(中级)</rank>
<ranknum>user5</ranknum>
<credit>100</credit>
<ReplyID>6751109</ReplyID>
<TopicID>1046047</TopicID>
<PostUserId>95303</PostUserId>
<PostUserName>Tomcat4</PostUserName>
<Point>0</Point>
<Content>为什么不用jspsmartupload组建?
而且增加数据库压力!</Content>
<PostDateTime>2002-9-23 15:15:09</PostDateTime>
</Reply>
<Reply>
<PostUserNickName></PostUserNickName>
<rank>一级(初级)</rank>
<ranknum>user1</ranknum>
<credit>100</credit>
<ReplyID>6751945</ReplyID>
<TopicID>1046047</TopicID>
<PostUserId>170689</PostUserId>
<PostUserName>linetsam</PostUserName>
<Point>0</Point>
<Content>1.&#32;想了解文件传输处理中的具体细节.

2.&#32;jspsmartupload只是第三方的东西,如果有一天,jspsmart组件的
&#32;&#32;&#32;升级没跟上jsdk的发展怎么办?所以最好还是自己动手做了.

3.&#32;虽然增加了数据库压力,如果硬件等各方面的性能能够保证,
&#32;&#32;&#32;认为文件管理的方便性比访问效率更重要,就可采用数据库保存。

4.&#32;直接保存到数据库可以避免上传/下载时文件同名等头疼的问题。(对我来
&#32;&#32;&#32;说,这是最主要的).

</Content>
<PostDateTime>2002-9-23 15:53:48</PostDateTime>
</Reply>
<Reply>
<PostUserNickName></PostUserNickName>
<rank>二级(初级)</rank>
<ranknum>user2</ranknum>
<credit>100</credit>
<ReplyID>6755381</ReplyID>
<TopicID>1046047</TopicID>
<PostUserId>233360</PostUserId>
<PostUserName>hpq852</PostUserName>
<Point>0</Point>
<Content>jspsmart的确很好用
不过你可以把jspsmart的文件反编译一下
看看里面的源代码
可能对你有帮助</Content>
<PostDateTime>2002-9-23 18:35:45</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>小唐蔡</PostUserNickName>
<rank>四级(中级)</rank>
<ranknum>user4</ranknum>
<credit>100</credit>
<ReplyID>6756398</ReplyID>
<TopicID>1046047</TopicID>
<PostUserId>246001</PostUserId>
<PostUserName>Tmsheng</PostUserName>
<Point>100</Point>
<Content>这样你需要了解浏览器端的编码方式,在传到服务器端时你才能解码。也才可以得到上传文件的相关信息。下面是别处取来的代码,一直没时间去看看,正好你可以研究一下,看是否有用。
package&#32;mshtang.fileUpload;
import&#32;java.io.*;
/**一个存放文件信息的类,包括文件的名称(String),
**字段名(String),&#32;Content-Type(String)和内容(byte[])
**还提供了一个直接将文件内容保存到一个文件的函数&#32;void&#32;saveTo(File&#32;f)
**可以调用&#32;类{@link&#32;ContentFactory}中的适当方法,生成该类的实例。
**&#32;@see&#32;ContentFactory
**&#32;@see&#32;ContentFactory#getFileParameter
**&#32;@see&#32;ContentFactory#getFileParameterValues
**/

public&#32;class&#32;FileHolder
{
&#32;&#32;&#32;&#32;String&#32;contentType;
&#32;&#32;&#32;&#32;byte[]&#32;buffer;
&#32;&#32;&#32;&#32;String&#32;fileName;
&#32;&#32;&#32;&#32;String&#32;parameterName;

&#32;&#32;&#32;&#32;FileHolder(byte[]&#32;buffer,&#32;String&#32;contentType,&#32;String&#32;fileName,&#32;String&#32;parameterName)
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;this.buffer&#32;=&#32;buffer;
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;this.contentType&#32;=&#32;contentType;
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;this.fileName&#32;=&#32;fileName;
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;this.parameterName&#32;=&#32;parameterName;
&#32;&#32;&#32;&#32;}
&#32;&#32;&#32;&#32;/**把文件的内容存到指定的文件中,
&#32;&#32;&#32;&#32;**&lt;b&gt;这个方法不会检查这个文件是否可写、是否已经存在。&lt;/b&gt;
&#32;&#32;&#32;&#32;**@param&#32;file&#32;&#32;目的文件
&#32;&#32;&#32;&#32;**@throws&#32;在&#32;I/O&#32;操作中被抛出的&#32;IOException
&#32;&#32;&#32;&#32;**/
&#32;&#32;&#32;&#32;public&#32;void&#32;saveTo(File&#32;file)&#32;throws&#32;IOException
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;BufferedOutputStream&#32;out&#32;=&#32;new&#32;BufferedOutputStream(new&#32;FileOutputStream(file));
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;out.write(buffer);
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;out.close();
&#32;&#32;&#32;&#32;}

&#32;&#32;&#32;&#32;/**把文件的内容存到指定的文件中,
&#32;&#32;&#32;&#32;**&lt;b&gt;这个方法不会检查这个文件是否可写、是否已经存在。&lt;/b&gt;
&#32;&#32;&#32;&#32;**@param&#32;name&#32;目的文件名
&#32;&#32;&#32;&#32;**@throws&#32;在&#32;I/O&#32;操作中被抛出的&#32;IOException
&#32;&#32;&#32;&#32;**/
&#32;&#32;&#32;&#32;public&#32;void&#32;saveTo(String&#32;name)&#32;throws&#32;IOException
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;saveTo(new&#32;File(name));
&#32;&#32;&#32;&#32;}

&#32;&#32;&#32;/**
&#32;&#32;&#32;&#32;**返回一个文件内容的字节数组
&#32;&#32;&#32;&#32;**@return&#32;一个代表文件内容的字节数组
&#32;&#32;&#32;**/
&#32;&#32;&#32;&#32;public&#32;byte[]&#32;getBytes()
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;return&#32;buffer;
&#32;&#32;&#32;&#32;}

&#32;&#32;&#32;/**
&#32;&#32;&#32;&#32;**返回该文件在文件上载前在客户端的名称
&#32;&#32;&#32;&#32;**@return&#32;该文件在文件上载前在客户端的名称
&#32;&#32;&#32;**/
&#32;&#32;&#32;&#32;public&#32;String&#32;getFileName()
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;return&#32;fileName;
&#32;&#32;&#32;&#32;}

&#32;&#32;&#32;/**
&#32;&#32;&#32;&#32;**返回该文件的&#32;Content-Type
&#32;&#32;&#32;&#32;**@return&#32;该文件的&#32;Content-Type
&#32;&#32;&#32;**/
&#32;&#32;&#32;&#32;public&#32;String&#32;getContentType()
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;return&#32;contentType;
&#32;&#32;&#32;&#32;}

&#32;&#32;&#32;/**
&#32;&#32;&#32;&#32;**返回上载该文件时,Html&#32;页面窗体中&#32;file&#32;控件的&#32;name&#32;属性
&#32;&#32;&#32;&#32;**@return&#32;返回上载该文件时,Html&#32;页面窗体中&#32;file&#32;控件的&#32;name&#32;属性
&#32;&#32;&#32;**/
&#32;&#32;&#32;&#32;public&#32;String&#32;getParameterName()
&#32;&#32;&#32;&#32;{
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;return&#32;parameterName;
&#32;&#32;&#32;&#32;}
}</Content>
<PostDateTime>2002-9-23 19:37:09</PostDateTime>
</Reply>
<Reply>
<PostUserNickName>小唐蔡</PostUserNickName>
<rank>四级(中级)</rank>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -