我正在编写一个应用程序,并希望以编程方式将html文件上传到我的ftp服务器。问题是我正在向服务器发送一个空文件。为什么?我不知道,这就是我要问的原因。
App类是一个我正在使用INTENT存储无法传递的对象的类。
错误在哪里,我是否错误地创建了InputStream?它是不正确的字符集吗?
我希望我没有错过任何代码,如果有,请告诉我!
SimpleFTP: http://www.jibble.org/simpleftp/
InputStream创建者:
public void packHTML(List<Question> questions){
try {
String fileName = name + new Random().nextInt() + ".html";
File sdCard = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File dir = new File(sdCard.getAbsolutePath() + "/london_HTML");
dir.mkdirs();
File file = new File(dir, fileName);
FileOutputStream fw = new FileOutputStream(file);
fw.write("<html>\n".getBytes());
fw.write(("<head><title>" +name +"'s antwoorden</title></head>\n").getBytes());
fw.write("<body>\n".getBytes());
fw.write(("<h1>" +name +"'s antwoorden</h1><br>\n").getBytes());
for(int i = 0; i < questions.size(); i++){
fw.write(questions.get(i).getAsHtml().getBytes());
}
fw.write("</body>\n".getBytes());
fw.write("</html>".getBytes());
fw.flush();
fw.close();
StringBuilder b = new StringBuilder();
b.append("<html>\n");
b.append("<head><title>" +name +"'s antwoorden</title></head>\n");
b.append("<body>\n");
b.append("<h1>" +name +"'s antwoorden</h1><br>\n");
for(int i = 0; i < questions.size(); i++){
b.append(questions.get(i).getAsHtml());
}
b.append("</body>\n");
b.append("</html>\n");
//StringReader r = new StringReader(b.toString());
App.in = new ByteArrayInputStream(b.toString().getBytes("UTF-8"));
file.setReadable(true, false);
App.file = file;
System.out.println(file.getAbsoluteFile());
Intent intent = new Intent(this, ConfirmActivity.class);
intent.putExtra("localAddress", this.getFilesDir().getPath() +"/" +fileName);
intent.putExtra("webAddress", "http://yteditors.tk/luploads/" +fileName);
intent.putExtra("fileName", fileName);
intent.putExtra("name", name);
startActivity(intent);
} catch (IOException e) {
Toast t = Toast.makeText(this, "Error with file", Toast.LENGTH_SHORT);
t.show();
e.printStackTrace();
}
}
发射器:
public void sendFtp() throws Exception{
SimpleFTP ftp = new SimpleFTP();
ftp.connect("IP", PORT, "UN", "PASS");
ftp.bin();
ftp.stor(App.in, getIntent().getExtras().getString("fileName"));
ftp.disconnect();
}
编辑:
我可能发现了问题:命令“STOR”服务器回复“331”,这意味着它仍然需要密码验证。无论如何,谢谢你的帮助!
编辑:
不是问题,仍然是空文件.. :(