我必须在两个地方上传文件,
我编写了post
端点,该端点从请求中读取文件并通过请求将相同文件发送给Jira,并在成功响应后将其保存在本地。
我的代码如下所示
for file in request.files.getlist('file'):
filename = file.filename
mimetype = file.content_type
if not is_valid_type(mimetype):
return json.dumps({"success": False, "message": "Invalid File Format" }), 415
files = {'file': (filename, file, mimetype)}
r = requests.post(jira_url, files=files, headers=headers, auth=HTTPBasicAuth(current_app.config.get('username'), current_app.config.get('password')),verify=False)
LOG.info("Got %s response from %s - text %s", r.status_code, "upload", r.json())
data = r.json()
filename = secure_filename(file.filename)
file.save(os.path.join(current_app.config["UPLOAD_FOLDER"], filename))
它保存文件,但是当我尝试打开它时,它说我们不支持此文件格式。
如果我从循环中删除对Jira的post
调用,那么它将以正确的格式保存文件。
答案 0 :(得分:0)
您尝试过打开/写入吗?:
Main Activity class
package com.deitel.sqlitedatabase_recyclerview;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.database.Cursor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import com.deitel.sqlitedatabase_recyclerview.adapterclass.NotepadAdapter;
import com.deitel.sqlitedatabase_recyclerview.database.DatabaseHelper;
import com.deitel.sqlitedatabase_recyclerview.modelclass.NotepadModelClass;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
/*attach database class*/
DatabaseHelper mydb;
/*attach database class*/
EditText text_name;
EditText text_details;
RecyclerView recyclerView;
Spinner spinner;
Button btn_show, btn_view;
ArrayList<NotepadModelClass> itemslist = new ArrayList<>();
NotepadAdapter addapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*this called the constructor of database class*/
mydb=new DatabaseHelper(this);
/*construct end*/
text_name = findViewById(R.id.text_name);
text_details = findViewById(R.id.text_details);
btn_view = findViewById(R.id.btn_view);
btn_show = findViewById(R.id.btn_show);
recyclerView = findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
addapter = new NotepadAdapter(itemslist);
recyclerView.setAdapter(addapter);
spinner = findViewById(R.id.spinner);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("JAVA");
arrayList.add("PHP");
arrayList.add("PYTHON");
arrayList.add("OOP");
arrayList.add("C#");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, arrayList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selecteditems=parent.getItemAtPosition(position).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
AddData();
ViewData();
// btn_show.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// String name = text_name.getText().toString();
// String details = text_details.getText().toString();
// String languages = spinner.getSelectedItem().toString();
// if (TextUtils.isEmpty(name) || TextUtils.isEmpty(details)) {
// Toast.makeText(MainActivity.this, "TextField is missing", Toast.LENGTH_SHORT).show();
// return;
// } else {
//
// ModelClass modelClass = new ModelClass(name, details, languages);
// itemslist.add(modelClass);
// text_name.setText("");
// text_details.setText("");
// addapter.notifyItemInserted(itemslist.size());
//
//
// }
// }
// });
}
public void AddData(){
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name=text_name.getText().toString();
String details=text_details.getText().toString();
String languages=spinner.getSelectedItem().toString();
boolean isinserted=mydb.insertdata(name,details,languages);
NotepadModelClass modelClass =new NotepadModelClass(name,details,languages);
if (TextUtils.isEmpty(name) || (TextUtils.isEmpty(details))){
Toast.makeText(MainActivity.this, "Textfield is missing", Toast.LENGTH_SHORT).show();
}else {
itemslist.add(modelClass);
text_name.setText("");
text_details.setText("");
addapter.notifyItemInserted(itemslist.size());
}
if(isinserted==true) {
if (!TextUtils.isEmpty(name) && (!TextUtils.isEmpty(details))) {
Toast.makeText(MainActivity.this, "Data is Inserted", Toast.LENGTH_SHORT).show();
}
}
else {
Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_SHORT).show();
}
}
});
}
public void ViewData(){
btn_view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = mydb.getAlldata();
if (res.getCount() == 0) {
Toast.makeText(MainActivity.this, "error found", Toast.LENGTH_SHORT).show();
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()) {
buffer.append("id :" + res.getString(0) + "\n");
buffer.append("Name :" + res.getString(1) + "\n");
buffer.append("Details :" + res.getString(2) + "\n");
buffer.append("Languages :" + res.getString(3) + "\n\n");
}
itemslist(buffer.tostring());
}
});
}
}
指定路径目标的解决方案:
with open("input_file.txt", "w") as text_file:
text_file.write("destination_file")
text_file.close()