修复http上传成功后,如果服务器没有设置返回码导致上传失败的问题,
This commit is contained in:
@@ -82,7 +82,8 @@ public abstract class AbsFtpInfoThread<ENTITY extends AbsEntity, TASK_ENTITY ext
|
||||
ALog.i(TAG, s);
|
||||
boolean isExist = files.length != 0;
|
||||
if (!isExist && !isUpload) {
|
||||
failDownload("文件不存在,任务链接【" + mTaskEntity.urlEntity.url + "】", false);
|
||||
failDownload("文件不存在,任务链接【" + mTaskEntity.urlEntity.url + "】,remotePath:" + remotePath,
|
||||
false);
|
||||
int i = remotePath.lastIndexOf(File.separator);
|
||||
FTPFile[] files1;
|
||||
if (i == -1) {
|
||||
|
||||
@@ -232,7 +232,11 @@ public abstract class AbsThreadTask<ENTITY extends AbsNormalEntity, TASK_ENTITY
|
||||
ALog.w(TAG,
|
||||
"任务【" + mConfig.TEMP_FILE.getName() + "】thread__" + mConfig.THREAD_ID + "__重试失败,网络未连接");
|
||||
}
|
||||
if (mFailNum < RETRY_NUM && needRetry && NetUtils.isConnected(AriaManager.APP)) {
|
||||
if (mFailNum < RETRY_NUM
|
||||
&& needRetry
|
||||
&& NetUtils.isConnected(AriaManager.APP)
|
||||
&& !STATE.isCancel
|
||||
&& !STATE.isStop) {
|
||||
mFailTimer = new Timer(true);
|
||||
mFailTimer.schedule(new TimerTask() {
|
||||
@Override public void run() {
|
||||
|
||||
@@ -18,8 +18,8 @@ package com.arialyy.aria.core.upload;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import com.arialyy.aria.core.inf.AbsNormalEntity;
|
||||
import com.arialyy.aria.orm.Foreign;
|
||||
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
||||
import com.arialyy.aria.orm.Foreign;
|
||||
import com.arialyy.aria.orm.Primary;
|
||||
|
||||
/**
|
||||
@@ -29,6 +29,19 @@ import com.arialyy.aria.orm.Primary;
|
||||
public class UploadEntity extends AbsNormalEntity implements Parcelable {
|
||||
@Primary @Foreign(table = UploadTaskEntity.class, column = "key") private String filePath; //文件路径
|
||||
|
||||
/**
|
||||
* 上传完成后服务器返回的数据
|
||||
*/
|
||||
private String responseStr = "";
|
||||
|
||||
public String getResponseStr() {
|
||||
return responseStr;
|
||||
}
|
||||
|
||||
public void setResponseStr(String responseStr) {
|
||||
this.responseStr = responseStr;
|
||||
}
|
||||
|
||||
public String getFilePath() {
|
||||
return filePath;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.arialyy.aria.core.common.AbsFtpInfoThread;
|
||||
import com.arialyy.aria.core.common.OnFileInfoCallback;
|
||||
import com.arialyy.aria.core.upload.UploadEntity;
|
||||
import com.arialyy.aria.core.upload.UploadTaskEntity;
|
||||
import com.arialyy.aria.util.ALog;
|
||||
import com.arialyy.aria.util.CommonUtil;
|
||||
import java.io.File;
|
||||
import java.util.Properties;
|
||||
@@ -29,6 +30,7 @@ import org.apache.commons.net.ftp.FTPFile;
|
||||
* 单任务远程服务器文件信息
|
||||
*/
|
||||
class FtpFileInfoThread extends AbsFtpInfoThread<UploadEntity, UploadTaskEntity> {
|
||||
private static final String TAG = "FtpUploadFtpFileInfoThread";
|
||||
static final int CODE_COMPLETE = 0xab1;
|
||||
private boolean isComplete = false;
|
||||
|
||||
@@ -56,12 +58,21 @@ class FtpFileInfoThread extends AbsFtpInfoThread<UploadEntity, UploadTaskEntity>
|
||||
if (ftpFile.getSize() == mEntity.getFileSize()) {
|
||||
isComplete = true;
|
||||
} else {
|
||||
ALog.w(TAG, "FTP服务器已存在未完成的文件【"
|
||||
+ ftpFile.getName()
|
||||
+ ",size: "
|
||||
+ ftpFile.getSize()
|
||||
+ "】"
|
||||
+ "尝试从位置:"
|
||||
+ ftpFile.getSize()
|
||||
+ "开始上传");
|
||||
File configFile = new File(CommonUtil.getFileConfigPath(false, mEntity.getFileName()));
|
||||
Properties pro = CommonUtil.loadConfig(configFile);
|
||||
String key = mEntity.getFileName() + "_record_" + 0;
|
||||
mTaskEntity.isNewTask = false;
|
||||
long oldRecord = Long.parseLong(pro.getProperty(key, "0"));
|
||||
if (oldRecord != 0) {
|
||||
//修改本地保存的停止地址为服务器上的真实地址
|
||||
if (oldRecord == 0) {
|
||||
//修改本地保存的停止地址为服务器上对应文件的大小
|
||||
pro.setProperty(key, ftpFile.getSize() + "");
|
||||
CommonUtil.saveConfig(configFile, pro);
|
||||
}
|
||||
|
||||
@@ -89,7 +89,8 @@ class HttpThreadTask extends AbsThreadTask<UploadEntity, UploadTaskEntity> {
|
||||
addFormField(writer, key, mTaskEntity.formFields.get(key));
|
||||
}
|
||||
uploadFile(writer, mTaskEntity.attachment, uploadFile);
|
||||
finish(writer);
|
||||
mTaskEntity.getEntity().setResponseStr(finish(writer));
|
||||
mListener.onComplete();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
fail();
|
||||
@@ -167,7 +168,6 @@ class HttpThreadTask extends AbsThreadTask<UploadEntity, UploadTaskEntity> {
|
||||
STATE.isRunning = false;
|
||||
return;
|
||||
}
|
||||
mListener.onComplete();
|
||||
STATE.isRunning = false;
|
||||
}
|
||||
|
||||
@@ -184,6 +184,7 @@ class HttpThreadTask extends AbsThreadTask<UploadEntity, UploadTaskEntity> {
|
||||
writer.close();
|
||||
|
||||
int status = mHttpConn.getResponseCode();
|
||||
|
||||
if (status == HttpURLConnection.HTTP_OK) {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(mHttpConn.getInputStream()));
|
||||
String line;
|
||||
@@ -193,10 +194,9 @@ class HttpThreadTask extends AbsThreadTask<UploadEntity, UploadTaskEntity> {
|
||||
reader.close();
|
||||
mHttpConn.disconnect();
|
||||
} else {
|
||||
ALog.w(TAG, "state_code = " + status);
|
||||
fail();
|
||||
ALog.e(TAG, "response msg: " + mHttpConn.getResponseMessage() + ",code: " + status);
|
||||
// fail();
|
||||
}
|
||||
|
||||
writer.flush();
|
||||
writer.close();
|
||||
mOutputStream.close();
|
||||
|
||||
@@ -34,7 +34,7 @@ import java.util.Map;
|
||||
class DBConfig {
|
||||
static Map<String, Class> mapping = new HashMap<>();
|
||||
static String DB_NAME;
|
||||
static int VERSION = 22;
|
||||
static int VERSION = 23;
|
||||
|
||||
static {
|
||||
if (TextUtils.isEmpty(DB_NAME)) {
|
||||
|
||||
Reference in New Issue
Block a user