在Java中使用jfinal完成ftp文件上传代码
时间: 2023-03-23 18:04:17 浏览: 327
2.4.3 JFinal控制器详解_getFile接收文件上传.mp4
可以使用以下代码实现FTP文件上传:
```
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.tx.Tx;
import com.jfinal.upload.UploadFile;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import java.io.IOException;
import java.io.InputStream;
public class FtpController extends Controller {
public void upload() {
UploadFile file = getFile("file");
boolean success = false;
try {
success = uploadToFtp(file.getFileName(), file.getFile());
} catch (IOException e) {
e.printStackTrace();
}
if (success) {
renderText("上传成功");
} else {
renderText("上传失败");
}
}
@Before(Tx.class)
public boolean uploadToFtp(String fileName, File file) throws IOException {
FTPClient ftp = new FTPClient();
ftp.connect("ftp.example.com", 21);
ftp.login("username", "password");
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return false;
}
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
InputStream input = new FileInputStream(file);
boolean success = ftp.storeFile(fileName, input);
input.close();
ftp.logout();
ftp.disconnect();
if (success) {
Record record = new Record().set("file_name", fileName);
Db.save("file", record);
}
return success;
}
}
```
这段代码使用了 jfinal 框架和 Apache Commons Net 库来实现 FTP 文件上传。在 uploadToFtp 方法中,我们连接到 FTP 服务器,设置文件类型为二进制,使用被动模式,然后将文件上传到服务器。如果上传成功,我们将文件名保存到数据库中。在 upload 方法中,我们使用 getFile 方法获取上传的文件,然后调用 uploadToFtp 方法将文件上传到 FTP 服务器。最后,我们根据上传结果返回相应的信息。
阅读全文