Java服务器怎么接收手机上传过来的文件。求具体代码,谢谢,如果觉得悬赏太少的话可以说,我再加。急。。

Java服务器怎么接收手机上传过来的文件。求具体代码,谢谢,如果觉得悬赏太少的话可以说,我再加。急。。,第1张

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();

}

}

}

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Java服务器怎么接收手机上传过来的文件。求具体代码,谢谢,如果觉得悬赏太少的话可以说,我再加。急。。

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情