Php 无法将文件从android 4.4上载到webview
我在谷歌和这里搜索了很多东西,但真的找不到在android 4.4中使用HTTP请求、JavaScript或phone gap上传的方法 我尝试使用POST使用HTTP请求上传 这是我的密码Php 无法将文件从android 4.4上载到webview,php,file-upload,cordova,webview,android-4.4-kitkat,Php,File Upload,Cordova,Webview,Android 4.4 Kitkat,我在谷歌和这里搜索了很多东西,但真的找不到在android 4.4中使用HTTP请求、JavaScript或phone gap上传的方法 我尝试使用POST使用HTTP请求上传 这是我的密码 public class Upload_File { private int serverResponseCode; private String serverResponseMessage; public void up_myfile(String pathToOurFile , String url
public class Upload_File {
private int serverResponseCode;
private String serverResponseMessage;
public void up_myfile(String pathToOurFile , String urlServer) {
HttpURLConnection connection = null;
DataOutputStream outputStream = null;
DataInputStream inputStream = null;
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1*1024*1024;
try
{
FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile) );
URL url = new URL(urlServer);
connection = (HttpURLConnection) url.openConnection();
// Allow Inputs & Outputs
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
// Enable POST method
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
outputStream = new DataOutputStream( connection.getOutputStream() );
outputStream.writeBytes(twoHyphens + boundary + lineEnd);
outputStream.writeBytes("Content-Disposition: form-data; name=\"userfile\";filename=\"" + pathToOurFile +"\"" + lineEnd);
outputStream.writeBytes(lineEnd);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// Read file
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0)
{
outputStream.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
outputStream.writeBytes(lineEnd);
outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
// Responses from the server (code and message)
serverResponseCode = connection.getResponseCode();
serverResponseMessage = connection.getResponseMessage();
fileInputStream.close();
outputStream.flush();
outputStream.close();
}
catch (Exception ex)
{
Log.e("MYAPP", "exception", ex);
}
}
}
在服务器端:
if (isset($_FILES)) {
if (is_uploaded_file($_FILES['userfile'])) {
if (0 === $_FILES['userfile']['error']) {
echo "there is a file";
}else{echo "mafeesh file error number ".$_FILES['userfile']['name']."</br>";}
}else{echo "there is NO a file<br>";}
}
$filename = basename($_FILES['userfile']['name']);
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$new= $id.'.'.$extension;
echo "test uploading !!! ".$_FILES['userfile']['tmp_name']."</br>";
if(move_uploaded_file($_FILES["userfile"]["tmp_name"],"photos/" .$new)){
echo "The file ". $filename. " has been uploaded";
} else{
echo "There was an error uploading the file ??, please try again!";
}
if(isset($\u文件)){
如果(是否上载了文件($文件['userfile'])){
如果(0==$\u文件['userfile']['error']){
回声“有一个文件”;
}else{echo“mafeesh文件错误号”。$\u文件['userfile']['name'].“”;}
}否则{echo“没有文件
”;}
}
$filename=basename($_文件['userfile']['name']);
$extension=pathinfo($filename,pathinfo_extension);
$new=$id....$extension;
echo“测试上传!!!”$\u文件['userfile']['tmp\u name']。“”;
如果(移动上传的文件($文件[“用户文件”][“tmp文件名”],“照片/”$新)){
回显“文件”.$filename.“已上载”;
}否则{
echo“上传文件时出错???,请重试!”;
}
$\u文件['userfile']['name']为空,未上载任何内容帮助我迷路的人:(:(如果是phonegap项目或应用程序,请使用phonegap文件传输方法,首先需要它将此插件安装到phonegap项目中
cordova plugin add org.apache.cordova.file-transfer
// !! Assumes variable fileURL contains a valid URL to a text file on the device,
// for example, cdvfile://localhost/persistent/path/to/file.txt
var win = function (r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
var fail = function (error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";
var params = {};
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
您的is_uploaded_文件不正确。它需要的是路径,而不是表示上载文件的数组。
is_uploaded_文件($\u POST['userfile']['tmp_name'])
应该是正确的。无论如何,这是一个毫无意义的测试。如果上传失败,那么就不会有一个文件供is_上传的文件进行测试。纠正了条件,但没有办法。嗯,好吧,但是我的项目不是phonegap项目,那么有没有办法使我当前的项目成为phonegap项目,或者我必须创建一个新的phonegap项目hnk转换是困难的