附加没有完整路径名的文件

时间:2009-11-05 08:10:06

标签: java servlets file-upload path

每当我尝试从网页浏览器(谷歌浏览器或Mozzila)中的HTML页面附加任何文件并发送到Servlet时,我只是获取文件的名称而没有完整的路径。如果我从C驱动器附加任何文件,我不会得到它的完整地址。每当我尝试将此文件名发送到邮件服务器时,我都会遇到异常:

Caused by: java.io.FileNotFoundException: Hello.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at javax.activation.FileDataSource.getInputStream(Unknown Source)
    at javax.activation.DataHandler.writeTo(Unknown Source)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1381)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:852)
    at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:452)
    at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:98)
    at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
    at javax.activation.DataHandler.writeTo(Unknown Source)
    at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1381)
    at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1742)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:737)
    ... 18 more

如何摆脱这个问题?如何获取我上传文件的完整地址?

2 个答案:

答案 0 :(得分:2)

即使您要获取完整路径,它也将是客户端计算机上文件的路径,服务器无权访问该文件。

如果要将上载的文件存储在服务器上,则需要将上载的文件存储在本地服务器文件系统上,然后将其传递给JavaMail API。

答案 1 :(得分:0)

要点:你不应该发送文件路径,但是你应该发送文件内容。

想象一下,我是服务器,我在本地磁盘系统上有一个文件路径“c:/passwords.txt”,你可以告诉我它的内容是什么吗?