另外一般会WinRAR打包,
你找找看下载栏里有没有这样的文件,有的话,下载好,和电影文件放在一起,
改成一样的文件名,比如123.avi和123.srt,或者123.avi,123.idx,123.sub。
这样用暴风或者终极解码之类的播放器就可以看到字幕了。
form表单提交文件,建议用smartupload上传,暂存在web服务器目录下,然后稍微一下下面的代码,ftp上传后,删除暂存文件,okimport java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
import java.util.StringTokenizer
import org.apache.commons.net.ftp.FTP
import org.apache.commons.net.ftp.FTPClient
import org.apache.commons.net.ftp.FTPReply
import org.apache.log4j.Logger
/**
* Ftp 服务类,对Apache的commons.net.ftp进行了包装<br>
* 依赖库文件:commons-net-1.4.1.jar
*
* @version 1.0 2008-02-18
* @author huchao@jbsoft
*/
public class FtpService {
public FtpService(String serverAddr, String lsenport, String userName,
String pswd) {
this.ftpServerAddress = serverAddr
this.port = Integer.parseInt(lsenport)
this.user = userName
this.password = pswd
}
/**
* FTP 服务器地址
*/
private String ftpServerAddress = null
/**
* FTP 服务端口
*/
private int port = 21
/**
* FTP 用户名
*/
private String user = null
/**
* FTP 密码
*/
private String password = null
/**
* FTP 数据传输超时时间
*/
private int timeout = 0
/**
* 异常:登录失败
*/
private final I2HFException EXCEPTION_LOGIN = new I2HFException("COR101",
"FTP服务器登录失败")
/**
* 异常:文件传输失败
*/
private final I2HFException EXCEPTION_FILE_TRANSFER = new I2HFException(
"COR010", "FTP文件传输失败")
/**
* 异常:IO异常
*/
private final I2HFException EXCEPTION_GENERAL = new I2HFException("COR010",
"FTP IO 异常")
private static final Logger logger = Logger.getLogger(FtpService.class)
/**
* 初始化FTP连接,并进行用户登录
*
* @return FTPClient
* @throws I2HFException
*/
public FTPClient initConnection() throws I2HFException {
FTPClient ftp = new FTPClient()
try {
// 连接到FTP
ftp.connect(ftpServerAddress, port)
int reply = ftp.getReplyCode()
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect()
throw new I2HFException("COR010", "FTP服务器连接失败")
}
// 登录
if (!ftp.login(user, password)) {
throw EXCEPTION_LOGIN
}
// 传输模式使用passive
ftp.enterLocalPassiveMode()
// 设置数据传输超时时间
ftp.setDataTimeout(timeout)
logger.info("FTP服务器[" + ftpServerAddress + " : " + port + "]登录成功")
} catch (I2HFException te) {
logger.info(te.errorMessage, te)
throw te
} catch (IOException ioe) {
logger.info(ioe.getMessage(), ioe)
throw EXCEPTION_LOGIN
}
return ftp
}
/**
* 设置传输方式
*
* @param ftp
* @param binaryFile
*true:二进制/false:ASCII
* @throws I2HFException
*/
public void setTransferMode(FTPClient ftp, boolean binaryFile)
throws I2HFException {
try {
if (binaryFile) {
ftp.setFileType(FTP.BINARY_FILE_TYPE)
logger.info("FTP文件传输方式为:二进制")
} else {
ftp.setFileType(FTP.ASCII_FILE_TYPE)
logger.info("FTP文件传输方式为:ASCII")
}
} catch (IOException ex) {
logger.info(ex.getMessage(), ex)
throw EXCEPTION_GENERAL
}
}
/**
* 在当前工作目录下建立多级目录结构
*
* @param ftp
* @param dir
* @throws I2HFException
*/
public void makeMultiDirectory(FTPClient ftp, String dir)
throws I2HFException {
try {
StringBuffer fullDirectory = new StringBuffer()
StringTokenizer toke = new StringTokenizer(dir, "/")
while (toke.hasMoreElements()) {
String currentDirectory = (String) toke.nextElement()
fullDirectory.append(currentDirectory)
ftp.makeDirectory(fullDirectory.toString())
if (toke.hasMoreElements()) {
fullDirectory.append('/')
}
}
} catch (IOException ex) {
logger.info(ex.getMessage(), ex)
throw EXCEPTION_GENERAL
}
}
/**
* 更改服务器当前路径
*
* @param ftp
* @param dir
* @throws I2HFException
*/
public void changeWorkingDirectory(FTPClient ftp, String dir)
throws I2HFException {
try {
if (!ftp.changeWorkingDirectory(dir)) {
throw new I2HFException("COR010", "目录[ " + dir + "]进入失败")
}
} catch (I2HFException tfe) {
logger.info(tfe.errorMessage, tfe)
throw tfe
} catch (IOException ioe) {
logger.info(ioe.getMessage(), ioe)
throw EXCEPTION_GENERAL
}
}
/**
* 上传文件到FTP服务器
*
* @param ftp
* @param localFilePathName
* @param remoteFilePathName
* @throws I2HFException
*/
public void uploadFile(FTPClient ftp, String localFilePathName,
String remoteFilePathName) throws I2HFException {
InputStream input = null
try {
input = new FileInputStream(localFilePathName)
boolean result = ftp.storeFile(remoteFilePathName, input)
if (!result) {
// 文件上传失败
throw EXCEPTION_FILE_TRANSFER
}
logger.info("文件成功上传到FTP服务器")
} catch (I2HFException tfe) {
logger.info(tfe.getMessage(), tfe)
throw tfe
} catch (IOException ioe) {
logger.info(ioe.getMessage(), ioe)
throw EXCEPTION_FILE_TRANSFER
} finally {
try {
if (input != null) {
input.close()
}
} catch (IOException ex) {
logger.info("FTP对象关闭异常", ex)
}
}
}
/**
* 下载文件到本地
*
* @param ftp
* @param remoteFilePathName
* @param localFilePathName
* @throws I2HFException
*/
public void downloadFile(FTPClient ftp, String remoteFilePathName,
String localFilePathName) throws I2HFException {
boolean downloadResult = false
OutputStream output = null
try {
output = new FileOutputStream(localFilePathName)
downloadResult = ftp.retrieveFile(remoteFilePathName, output)
if (!downloadResult) {
// 如果是文件不存在将异常抛出
throw new I2HFException("COR011", "文件不存在")
}
logger.info("文件成功从FTP服务器下载")
} catch (I2HFException tfe) {
logger.error(tfe.getMessage(), tfe)
throw tfe
} catch (IOException ex) {
logger.error(ex.getMessage(), ex)
throw EXCEPTION_FILE_TRANSFER
} finally {
try {
if (output != null) {
output.close()
}
if (!downloadResult) {
new File(localFilePathName).delete()
}
} catch (IOException ex) {
logger.error("FTP对象关闭异常", ex)
}
}
}
/**
* Method setFtpServerAddress.
*
* @param ftpServerAddress
*String
*/
public void setFtpServerAddress(String ftpServerAddress) {
this.ftpServerAddress = ftpServerAddress
}
/**
* Method setUser.
*
* @param user
*String
*/
public void setUser(String user) {
this.user = user
}
/**
* Method setPassword.
*
* @param password
*String
*/
public void setPassword(String password) {
this.password = password
}
/**
* Method setTimeout.
*
* @param timeout
*String
*/
public void setTimeout(String timeout) {
try {
this.timeout = Integer.parseInt(timeout)
} catch (NumberFormatException ex) {
// 默认超时时间500毫秒
this.timeout = 500
}
}
/**
* Method setPort.
*
* @param port
*String
*/
public void setPort(String port) {
try {
this.port = Integer.parseInt(port)
} catch (NumberFormatException ex) {
// 默认端口21
this.port = 21
}
}
}
=====================================
jsp上传部分
===================================
<form method="post" name="uploadform" id="uploadform" action="upload" ENCTYPE="multipart/form-data">
<input type="hidden" name="service" value="com.jbsoft.i2hf.corpor.services.CstBatchBizServices.exclUpload"/>
<table cellspacing="0" cellpadding="0">
<tr>
<td width="20%" align="right">上传本地文件:</td>
<td width="80%"><input class="" style="width:300px" type="file" width="300px" name="exclname" id="exclname"/></td>
</tr>
</table>
</form>
============================================
上传的servlet用的是smartupload
,部分代码可以参考一下:
==========================================
SmartUpload su = new SmartUpload()
su.setCharset("UTF-8")
su.initialize(getServletConfig(), request, response)
su.setMaxFileSize(10240000)
su.setTotalMaxFileSize(102400000)
su.setAllowedFilesList("xls")
su.upload()
===========================================
代码里面有一些客户的信息,不能全部给你哈
JSP将HTML的表单数据提交生成一个XML文件的方法:1、定义表单,封装id,firstName和lastName
<form:form modelAttribute="person">
<form:hidden path="id" />
<fieldset>
<div class="form-row">
<label for="firstName"><fmt:message key="person.form.firstName"/>:</label>
<span class="input"><form:input path="firstName" /></span>
</div>
<div class="form-row">
<label for="lastName"><fmt:message key="person.form.lastName"/>:</label>
<span class="input"><form:input path="lastName" /></span>
</div>
<div class="form-buttons">
<div class="button">
<input type="submit" id="save" name="_eventId_save" value="<fmt:message key="button.save"/>"/>
<input type="submit" name="_eventId_cancel" value="Cancel"/>
</div>
</div>
</fieldset>
</form:form>
2、提交到servlet后,调用构造xml的java方法:
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance()
DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
// root elements
Document doc = docBuilder.newDocument()
Element rootElement = doc.createElement("company")
doc.appendChild(rootElement)
// staff elements
Element staff = doc.createElement("Staff")
rootElement.appendChild(staff)
// set attribute to staff element
Attr attr = doc.createAttribute("id")
attr.setValue("1")
staff.setAttributeNode(attr)
// shorten way
// staff.setAttribute("id", "1")
// firstname elements
Element firstname = doc.createElement("firstname")
firstname.appendChild(doc.createTextNode("yong"))
staff.appendChild(firstname)
// lastname elements
Element lastname = doc.createElement("lastname")
lastname.appendChild(doc.createTextNode("mook kim"))
staff.appendChild(lastname)
// nickname elements
Element nickname = doc.createElement("nickname")
nickname.appendChild(doc.createTextNode("mkyong"))
staff.appendChild(nickname)
// salary elements
Element salary = doc.createElement("salary")
salary.appendChild(doc.createTextNode("100000"))
staff.appendChild(salary)
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance()
Transformer transformer = transformerFactory.newTransformer()
DOMSource source = new DOMSource(doc)
StreamResult result = new StreamResult(new File("d:\\person.xml"));
transformer.transform(source, result)
System.out.println("File saved!")
} catch (ParserConfigurationException pce) {
pce.printStackTrace()
} catch (TransformerException tfe) {
tfe.printStackTrace()
}
3、构造完成:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<company>
<staff id="1">
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
</company>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)