我想要做的是使用 java 代码将一个简单的文本文件上传到 FTP 服务器,但出现错误。我正在努力使其工作,但无法做到这一点。下面是代码。
File file = new File("testFile.txt");
FileOutputStream fo = new FileOutputStream(file);
PrintStream ps = new PrintStream(fo);
ps.println("BLA");
ps.close();`enter code here`
fo.close();
uploadFile(file,file.getName());
public void upload( String ftpServer, String user, String password,
String fileName, FileInputStream is ) throws MalformedURLException,
IOException
{
log("inside upload...........");
if (ftpServer != null && fileName != null && is != null)
{
StringBuffer sb = new StringBuffer( "ftp://" );
// check for authentication else assume its anonymous access.
if (user != null && password != null)
{
sb.append( user );
sb.append( ':' );
sb.append( password );
sb.append( '@' );
}
sb.append( ftpServer );
sb.append( '/' );
sb.append( fileName );
/*
* type ==> a=ASCII mode, i=image (binary) mode, d= file directory
* listing
*/
sb.append( ";type=i" );
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try
{
URL url = new URL( sb.toString() );
URLConnection urlc = url.openConnection();
log("urlc::1 "+urlc);
bos = new BufferedOutputStream( urlc.getOutputStream() );
log("bos:: "+bos);
bis = new BufferedInputStream( is );
int i;
// read byte by byte until end of stream
while ((i = bis.read()) != -1)
{
log("i"+i);
bos.write( i );
}
}
finally
{
if (bis != null)
try
{
bis.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
if (bos != null)
try
{
bos.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
else
{
log( "Input not available." );
}
}
有关更多详细信息,我正在使用 java.net 导入。
我收到错误:
Exception e is :: java.io.IOException: illegal filename for a PUT
at sun.net.www.protocol.ftp.FtpURLConnection.getOutputStream(Unknown Source)
at ToolFileUpload.upload(ToolFileUpload.java:72)
at APInterfaceTool.uploadFile(APInterfaceTool.java:861)
at APInterfaceTool.createInvoiceTextFile(APInterfaceTool.java:613)
at APInterfaceTool.generateOutBoundExtract(APInterfaceTool.java:426)