Java服务器怎么接收手机上传过来的文件。求具体代码,谢谢,如果觉得悬赏太少的话可以说,我再加。急。。
android客户端代码:
public class MainActivity extends Activity
{
private TextView uploadInfo;
@Override
protected void onCreate(Bundle savedInstanceState)
{
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
uploadInfo = (TextView) findViewById(Ridupload_info);
uploadFile();
}
public void uploadFile()
{
//服务器端地址
String url = "http://1921680108:8080/UploadFileServer/upload";
String filePath = EnvironmentgetExternalStorageDirectory()
+ "/1/powerapk";
AsyncHttpClient httpClient = new AsyncHttpClient();
RequestParams param = new RequestParams();
try
{
paramput("file", new File(filePath));
paramput("content", "liucanwen");
httpClientpost(url, param, new AsyncHttpResponseHandler()
{
@Override
public void onStart()
{
superonStart();
uploadInfosetText("正在上传");
}
@Override
public void onSuccess(String arg0)
{
superonSuccess(arg0);
Logi("ck", "success>" + arg0);
if(arg0equals("success"))
{
ToastmakeText(MainActivitythis, "上传成功!", 1000)show();
}
uploadInfosetText(arg0);
}
@Override
public void onFailure(Throwable arg0, String arg1)
{
superonFailure(arg0, arg1);
uploadInfosetText("上传失败!");
}
});
} catch (FileNotFoundException e)
{
eprintStackTrace();
ToastmakeText(MainActivitythis, "上传文件不存在!", 1000)show();
}
}
}
服务器端代码:
public class UploadFileServlet extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
responsesetContentType("text/html");
PrintWriter out = responsegetWriter();
// 创建文件项目工厂对象
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置文件上传路径
String upload = thisgetServletContext()getRealPath("/upload/");
// 获取系统默认的临时文件保存路径,该路径为Tomcat根目录下的temp文件夹
String temp = SystemgetProperty("javaiotmpdir");
// 设置缓冲区大小为 5M
factorysetSizeThreshold(1024 1024 5);
// 设置临时文件夹为temp
factorysetRepository(new File(temp));
// 用工厂实例化上传组件,ServletFileUpload 用来解析文件上传请求
ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
// 解析结果放在List中
try
{
List<FileItem> list = servletFileUploadparseRequest(request);
for (FileItem item : list)
{
String name = itemgetFieldName();
InputStream is = itemgetInputStream();
if (namecontains("content"))
{
Systemoutprintln(inputStream2String(is));
} else if(namecontains("file"))
{
try
{
inputStream2File(is, upload + "\\" + itemgetName());
} catch (Exception e)
{
eprintStackTrace();
}
}
}
outwrite("success");
} catch (FileUploadException e)
{
eprintStackTrace();
outwrite("failure");
}
outflush();
outclose();
}
// 流转化成字符串
public static String inputStream2String(InputStream is) throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = isread()) != -1)
{
baoswrite(i);
}
return baostoString();
}
// 流转化成文件
public static void inputStream2File(InputStream is, String savePath)
throws Exception
{
Systemoutprintln("文件保存路径为:" + savePath);
File file = new File(savePath);
InputStream inputSteam = is;
BufferedInputStream fis = new BufferedInputStream(inputSteam);
FileOutputStream fos = new FileOutputStream(file);
int f;
while ((f = fisread()) != -1)
{
foswrite(f);
}
fosflush();
fosclose();
fisclose();
inputSteamclose();
}
}
大多数是用过***或者开过加速器导致DNS或代理设置被修改后没有还原导致的问题。
1打开ie浏览器,选择“设置”→“Internet选项”2在“连接”选项卡中,点击“设置”
3勾选“自动检测设置”,取消所有“代理服务器”下选项,点击“确定”
4在“连接”选项卡中,点击“局域网设置”,操作同上5全部设置成功后点击“确定”。完成。
艾尔之光是一款侧重于pvp的动漫风游戏画面的第三人称动作对战端游
目前只支持英语和韩语,不支持中文。
根据你的邮箱不同而有所不同。
比如QQ邮箱的,服务器是imapqqcom和smtpqqcom,填SSL端口993。
gmail的接收服务器是imapgmailcom,填TTL。
163的服务器smtpgmailcom,填TLS端口587。
IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol)。
IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。
IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。
(1)我们在本地新建一个。htaccess的文本文件,注意。htaccess是这个文本文件的名称,所以文本文件的全称是:。htaccesstxt
(2)在该文本文件中写入如下代码:
复制代码
1 # 将 RewriteEngine 模式打开
2 RewriteEngine On
3
4 RewiteBase /
5
6 RewriteCond %{HTTP_HOST} ^(www\)?example\com$ [NC]
7 RewriteCond %{REQUEST_URI} !^/bbs/
8 RewriteCond %{REQUEST_FILENAME} !-f
9 RewriteCond %{REQUEST_FILENAME} !-d
10 RewriteRule ^(。)$ bbs/$1
11 # 没有输入文件名的默认到到首页
12 RewriteCond %{HTTP_HOST} ^(www\)?example\com$ [NC]
13 RewriteRule ^(/)?$ bbs/forumphp [L]
复制代码
(3)将该文本文件的扩展名。txt去掉,使用ftp上传工具上传到网站的根目录(www/web目录),注意,这里一定要是网站的根目录。我们在做seo优化设置里面的URL静态化也需要写这个文件,但是那个。htaccess文件就要放在bbs目录里面。
参考下面的代码:
1取得和设置当前目录(即该进程从中启动的目录)的完全限定路径。string str = SystemEnvironmentCurrentDirectory;
结果: C:\xxx\xxx
2取得启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str = SystemWindowsFormsApplicationStartupPath;
结果: C:\xxx\xxx
3取得应用程序的当前工作目录。
string str = SystemIODirectoryGetCurrentDirectory();
结果: C:\xxx\xxx
4取得当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = SystemAppDomainCurrentDomainBaseDirectory;
结果: C:\xxx\xxx\
5取得和设置包含该应用程序的目录的名称。
string str = SystemAppDomainCurrentDomainSetupInformationApplicationBase;
结果: C:\xxx\xxx\
6取得启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str = SystemWindowsFormsApplicationExecutablePath;
结果: C:\xxx\xxx\xxxexe
7取得当前执行的exe的文件名。
string str = SystemDiagnosticsProcessGetCurrentProcess()MainModuleFileName;
结果: C:\xxx\xxx\xxxexe
8取得当前进程的完整路径,包含文件名。
string str = thisGetType()AssemblyLocation;
结果: C:\xxx\xxx\xxxexe
问一下,你是想做ftp上传下载么?
首先你需要安装一个ftp服务端程序,启动起来,然后下载一个ftp客户端程序,测试能不能连接,首先这一块儿需要测试通过。
代码ftp上传下载
21 上传代码:
import javaioFile;
import javaioFileInputStream;
import orgapachecommonsnetftpFTPClient;
import orgapachecommonsnetftpFTPReply;
public class test {
private FTPClient ftp;
/
@param path 上传到ftp服务器哪个路径下
@param addr 地址
@param port 端口号
@param username 用户名
@param password 密码
@return
@throws Exception
/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftpconnect(addr,port);
ftplogin(username,password);
ftpsetFileType(FTPClientBINARY_FILE_TYPE);
reply = ftpgetReplyCode();
if (!FTPReplyisPositiveCompletion(reply)) {
ftpdisconnect();
return result;
}
ftpchangeWorkingDirectory(path);
result = true;
return result;
}
/
@param file 上传的文件或文件夹
@throws Exception
/
private void upload(File file) throws Exception{
if(fileisDirectory()){
ftpmakeDirectory(filegetName());
ftpchangeWorkingDirectory(filegetName());
String[] files = filelist();
for (int i = 0; i < fileslength; i++) {
File file1 = new File(filegetPath()+"\\"+files[i] );
if(file1isDirectory()){
upload(file1);
ftpchangeToParentDirectory();
}else{
File file2 = new File(filegetPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftpstoreFile(file2getName(), input);
inputclose();
}
}
}else{
File file2 = new File(filegetPath());
FileInputStream input = new FileInputStream(file2);
ftpstoreFile(file2getName(), input);
inputclose();
}
}
public static void main(String[] args) throws Exception{
test t = new test();
tconnect("", "localhost", 21, "yhh", "yhhazr");
File file = new File("e:\\uploadify");
tupload(file);
}
}
22 下载代码
这里没有用到filter,如果用filter就可以过滤想要的文件。
public class Ftp {
/
@param args
/
public static void main(String[] args) {
// TODO Auto-generated method stub
Ftp ftp = new Ftp();
String hostname = "wwwstrawberrycom";
Integer port = 21;
String username = "username";
String password = "password";
String remote = "/ctxt";
String local = "/home/tin/LeonChen/FTP/";
try {
ftpconnect(hostname, port, username, password);
Systemoutprintln("接收状态:"+ftpdownload(remote, local));
ftpdisconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
private FTPClient ftpClient = new FTPClient();
/
连接到FTP服务器
@param hostname 主机名
@param port 端口
@param username 用户名
@param password 密码
@return 是否连接成功
@throws IOException
/
private boolean connect(String hostname, int port, String username,
String password) throws IOException {
ftpClientconnect(hostname, port);
ftpClientsetControlEncoding("UTF-8");
if (FTPReplyisPositiveCompletion(ftpClientgetReplyCode())) {
if (ftpClientlogin(username, password)) {
return true;
}
}
disconnect();
return false;
}
/
从FTP服务器上下载文件,支持断点续传,上传百分比汇报
@param remote 远程文件路径
@param local 本地文件路径
@return 上传的状态
@throws IOException
/
public DownloadStatus download(String remote, String local)
throws IOException {
// 设置被动模式
ftpCliententerLocalPassiveMode();
// 设置以二进制方式传输
ftpClientsetFileType(FTPBINARY_FILE_TYPE);
DownloadStatus result;
// 检查远程文件是否存在
FTPFile[] files = ftpClientlistFiles(new String(remote
getBytes("UTF-8"), "iso-8859-1"));
if (fileslength != 1) {
Systemoutprintln("远程文件不存在");
return DownloadStatusRemote_File_Noexist;
}
long lRemoteSize = files[0]getSize();
String fildName = files[0]getName();
// 本地存在文件,进行断点下载
File f = new File(local+fildName);
if (fexists()) {
long localSize = flength();
if (localSize >= lRemoteSize) {
Systemoutprintln("本地文件大于远程文件,下载中止");
return DownloadStatusLocal_Bigger_Remote;
}
// 进行断点续传,并记录状态
FileOutputStream out = new FileOutputStream(f, true);
ftpClientsetRestartOffset(localSize);
InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("UTF-8"), "iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize / 100;
long process = localSize / step;
int c;
while ((c = inread(bytes)) != -1) {
outwrite(bytes, 0, c);
localSize += c;
long nowProcess = localSize / step;
if (nowProcess > process) {
process = nowProcess;
if (process % 10 == 0)
Systemoutprintln("下载进度:" + process);
// TODO 更新文件下载进度,值存放在process变量中
}
}
inclose();
outclose();
boolean isDo = ftpClientcompletePendingCommand();
if (isDo) {
result = DownloadStatusDownload_From_Break_Success;
} else {
result = DownloadStatusDownload_From_Break_Failed;
}
} else {
OutputStream out = new FileOutputStream(f);
InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("UTF-8"), "iso-8859-1"));
byte[] bytes = new byte[1024];
long step = lRemoteSize / 100;
long process = 0;
long localSize = 0L;
int c;
while ((c = inread(bytes)) != -1) {
outwrite(bytes, 0, c);
localSize += c;
long nowProcess = localSize / step;
if (nowProcess > process) {
process = nowProcess;
if (process % 10 == 0)
Systemoutprintln("下载进度:" + process);
// TODO 更新文件下载进度,值存放在process变量中
}
}
inclose();
outclose();
boolean upNewStatus = ftpClientcompletePendingCommand();
if (upNewStatus) {
result = DownloadStatusDownload_New_Success;
} else {
result = DownloadStatusDownload_New_Failed;
}
}
return result;
}
private void disconnect() throws IOException {
if (ftpClientisConnected()) {
ftpClientdisconnect();
}
}
}
0条评论