创建File对象的问题 (URI URL)

honesty_aijf_88 2010-03-22 11:58:10
需求:客户端浏览器,提交文件本地的一个文件路径到服务器,例如:"C:\111.txt",在服务器的action中如何创建File对象?
不需要那种上传到服务器的固定路径下,然后在通过服务器固定路径创建File对象的方法。

File中有个构造函数是new File(URI uri);
我用的如下代码但是会抛异常:
String host = request.getRemoteAddr();// 获得发送者的host
// 用远程地址创建File对象
URL url = new URL("file",host, fileNameString);
URI uri = url.toURI();
File file = new File(uri);


具体异常见下:
java.net.URISyntaxException: Illegal character in path at index 20: file:///127.0.0.1/C:\111.txt


============
用struts1 或struts2 上传可以,但是这样就限制了文件大小了。
========================
换种思路,可以传递流的方式,然后在服务器端通过流创建文件,不知道这种方式是不是跟Struts的实现方式一致,会限制大小吗?
如果有人以前做过这方面类似的,可以帮忙解答下。
...全文
1801 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
honesty_aijf_88 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sotom 的回复:]
说实话 , 每太看懂 , 上传文件肯定有大小限制的,否则要FTP干嘛 。。如果大于5MB 建议做FTP服务器
[/Quote]
首先基于B/S架构,
前提 :1 客户端1(浏览器) 连接到服务器,客户端2连接到服务器,
需求:客户端1给客户端2发送文件(不要如下方式实现:客户端1先上传文件到服务器,客户端2下载)要直接在客户端1和客户端2建立socket连接。
提示:我用了Openfire服务器,Openfire服务器内部文件传输时socket实现方式。目前需要解决的问题如是Openfire的API中有有个类是服务发文件的,发文件的方法如下几种
1 void sendFile(File file, String description)
This method handles the stream negotiation process and transmits the file to the remote user.
2 OutputStream sendFile(String fileName, long fileSize, String description)
This method handles the negotiation of the file transfer and the stream, it only returns the created stream after the negotiation has been completed.
3 void sendFile(String fileName, long fileSize, String description, OutgoingFileTransfer.NegotiationProgress progress)
This methods handles the transfer and stream negotiation process.
4 void sendStream(InputStream in, String fileName, long fileSize, String description)
This method handles the stream negotiation process and transmits the file to the remote user.


我用的是第一种,所以需要构造File对象。
如何通过客户端1提交的文件路径(客户端1本地的文件路径)构建File对象?
再看一下第方法参数为流,所以考虑可以通过客户端1发送文件流,但是不知道限制大小不?



这个问题超难,或者有牛人告诉我不能实现(请阐述原因)。我查了很多资料,包括国外的。这个问题好像是第一次有这样的需求。
sotom 2010-03-22
  • 打赏
  • 举报
回复
说实话 , 每太看懂 , 上传文件肯定有大小限制的,否则要FTP干嘛 。。如果大于5MB 建议做FTP服务器
sotom 2010-03-22
  • 打赏
  • 举报
回复
哈哈,既然是史无前例,那你想没想想是不是你自己........??

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧