Как загрузить файл, используя Quickbase API в C#?
Я использую Quickbase C# SDK для отправки формы в Quickbase с внешнего сайта. Я хочу прикрепить файл вместе с формой и не могу понять, как это сделать.
Ниже приведена сокращенная версия моего кода:
ASPX
<form id="form1" runat="server">
<asp:TextBox ID="txtFileName" CssClass="textbox" Columns="40" runat="server"></asp:TextBox>
<input type="file" id="attachment1" runat="server" />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
</form>
CS
protected void btnSubmit_Click(object sender, EventArgs e)
{
IQClient client = QuickBase.Login("username", "password", "domain");
IQApplication app = client.Connect("db_id", "app_token";
AppInfo appInfo = app.GetApplicationInfo();
IQTable table = app.GetTable("table_id");
IQRecord newRecord = table.NewRecord();
newRecord["File Name"] = txtFileName.Text;
// attach file?
newRecord.AcceptChanges();
table.AcceptChanges();
client.Logout();
}
Заранее спасибо.
1 ответ
Конечно, я бы выяснил свой собственный вопрос после отправки его в Stackru. Конечно.
Но я опубликую свое решение на тот случай, если у других людей возникнет такая же проблема.
Мне пришлось добавить функцию в QuickBase C# SDK и перекомпилировать DLL, чтобы заставить это работать.
Добавьте эту строку в IQRecord.cs:
void UploadFile(string columnName, string filePath);
Добавьте эту функцию в QRecord.cs:
public void UploadFile(string columnName, string filePath)
{
// create new field with columnName
var index = GetColumnIndex(columnName);
CreateNewField(index, columnName);
// change field type to file
Columns[index].ColumnType = FieldType.file;
// Get field location with column index
var fieldIndex = _fields.IndexOf(new QField(Columns[index].ColumnId));
SetExistingField(index, fieldIndex, filePath);
}
Скомпилируйте и используйте так:
// code to upload file to temporary location
newRecord.UploadFile("Story", "path_to_temporary_location");
// delete temporary file